Files
syoul 0169f0d5cb Ajout de l'environnement de build Docker pour générer l'APK Android
- Dockerfile.android avec Android SDK et Capacitor
- docker-compose.build.yml pour le build
- Scripts automatisés build-apk.sh et generate-apk.sh
- Configuration Capacitor pour Android
- Documentation BUILD_APK.md
2025-11-23 09:04:07 +01:00

4.2 KiB

Guide de build APK avec Docker

Ce guide explique comment générer un APK Android pour l'application Compagnon Admin en utilisant Docker.

Prérequis

  • Docker installé
  • docker-compose installé
  • Au moins 10 Go d'espace disque libre (pour le SDK Android)

Étapes de build

1. Build initial (première fois)

Cette étape construit l'image Docker, installe Capacitor, et prépare le projet Android :

./scripts/build-apk.sh

Cette commande va :

  • Construire l'image Docker avec Android SDK
  • Installer les dépendances Capacitor
  • Build l'application Next.js en production
  • Initialiser Capacitor (si nécessaire)
  • Ajouter la plateforme Android
  • Synchroniser les fichiers

Durée estimée : 15-30 minutes (première fois, à cause du téléchargement du SDK Android)

2. Générer l'APK

Une fois le build initial terminé, générez l'APK :

./scripts/generate-apk.sh

L'APK sera généré dans dist/compagnon-admin-debug.apk

Durée estimée : 5-10 minutes

Utilisation manuelle

Si vous préférez exécuter les commandes manuellement :

Entrer dans le conteneur Docker

docker-compose -f docker-compose.build.yml run --rm android-builder /bin/bash

Commandes dans le conteneur

# Installer Capacitor (si pas déjà fait)
npm install @capacitor/core @capacitor/cli @capacitor/android

# Build Next.js
npm run build

# Initialiser Capacitor (première fois seulement)
npx cap init 'Compagnon Admin' com.pensionmarama.admin --web-dir=.next

# Ajouter Android
npx cap add android

# Synchroniser
npx cap sync android

# Générer l'APK
cd android
./gradlew assembleDebug

L'APK sera dans : android/app/build/outputs/apk/debug/app-debug.apk

Structure des fichiers

  • Dockerfile.android : Image Docker avec Android SDK
  • docker-compose.build.yml : Configuration Docker Compose pour le build
  • scripts/build-apk.sh : Script automatisé pour le build initial
  • scripts/generate-apk.sh : Script automatisé pour générer l'APK
  • capacitor.config.ts : Configuration Capacitor

Volumes Docker

Les volumes suivants sont créés pour optimiser les builds suivants :

  • android-sdk-cache : Cache du SDK Android
  • gradle-cache : Cache Gradle
  • node-modules : Modules Node.js

Dépannage

Erreur : "SDK not found"

Vérifiez que les licences Android sont acceptées dans le conteneur :

docker-compose -f docker-compose.build.yml run --rm android-builder sdkmanager --licenses

Erreur : "Gradle build failed"

Vérifiez les logs dans le conteneur :

docker-compose -f docker-compose.build.yml run --rm android-builder /bin/bash
cd android
./gradlew assembleDebug --stacktrace

Nettoyer et recommencer

# Supprimer les volumes
docker-compose -f docker-compose.build.yml down -v

# Reconstruire l'image
docker-compose -f docker-compose.build.yml build --no-cache

Distribution de l'APK

L'APK généré (dist/compagnon-admin-debug.apk) peut être distribué directement à vos bêta-testeurs.

Note importante : C'est un APK de debug. Pour une version de production, vous devrez :

  1. Créer un keystore
  2. Configurer la signature dans capacitor.config.ts
  3. Générer un APK release avec ./gradlew assembleRelease

Limitations avec les API Routes

⚠️ Attention : Avec output: 'export' dans Next.js, les API routes (/api/*) ne fonctionneront pas car elles nécessitent un serveur Node.js.

Pour que l'application admin fonctionne complètement dans l'APK, vous avez deux options :

Option 1 : Héberger les API routes séparément

Déployez les API routes sur un serveur (Vercel, Railway, etc.) et modifiez les appels API dans l'application pour pointer vers cette URL.

Option 2 : Utiliser un serveur embarqué (avancé)

Intégrer un serveur Node.js dans l'APK (plus complexe, nécessite des modifications supplémentaires).

Option 3 : Version statique sans API routes

Créer une version simplifiée de l'admin qui utilise uniquement le localStorage (limité aux fonctionnalités de base).

Support

En cas de problème, vérifiez :

  • Les logs Docker : docker-compose -f docker-compose.build.yml logs
  • L'espace disque disponible
  • La version de Docker (minimum 20.10)