From 092d537180cefea169a1f5d52a8056c44f031e32 Mon Sep 17 00:00:00 2001 From: syoul Date: Sun, 23 Nov 2025 17:18:34 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20script=20build-apk-admin.sh=20pour?= =?UTF-8?q?=20g=C3=A9n=C3=A9rer=20l'APK=20admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Script dédié pour l'APK admin (compagnon-admin-debug.apk) - Configuration Capacitor pour com.pensionmarama.admin - Exclusion temporaire des routes API pendant le build - Génération de l'APK admin avec les corrections pour /admin/login --- scripts/build-apk-admin.sh | 209 +++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100755 scripts/build-apk-admin.sh diff --git a/scripts/build-apk-admin.sh b/scripts/build-apk-admin.sh new file mode 100755 index 0000000..d44a532 --- /dev/null +++ b/scripts/build-apk-admin.sh @@ -0,0 +1,209 @@ +#!/bin/bash + +set -e + +echo "🚀 Build APK Admin - Compagnon du Lagon" +echo "========================================" +echo "" + +# Couleurs pour les messages +GREEN='\033[0;32m' +BLUE='\033[0;34m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Vérifier qu'on est dans le bon répertoire +if [ ! -f "package.json" ]; then + echo "❌ Erreur: Exécutez ce script depuis la racine du projet" + exit 1 +fi + +# Étape 1: Créer la configuration Next.js pour l'export statique +echo -e "${BLUE}📦 Étape 1/6: Configuration Next.js pour export statique${NC}" +cat > next.config.export.js << 'EOF' +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + swcMinify: true, + output: "export", + compress: true, + poweredByHeader: false, + images: { + unoptimized: true, + }, +}; + +module.exports = nextConfig; +EOF + +# Copier la config pour le build +cp next.config.export.js next.config.js + +echo -e "${GREEN}✅ Configuration créée${NC}" +echo "" + +# Étape 2: Installer les dépendances si nécessaire +echo -e "${BLUE}📦 Étape 2/6: Vérification des dépendances${NC}" + +# Vérifier SDKMAN +if [ ! -f "$HOME/.sdkman/bin/sdkman-init.sh" ]; then + echo "Installation de SDKMAN..." + curl -s "https://get.sdkman.io" | bash + source "$HOME/.sdkman/bin/sdkman-init.sh" +fi + +source "$HOME/.sdkman/bin/sdkman-init.sh" 2>/dev/null || true + +# Vérifier Java 21 +if ! java -version 2>&1 | grep -q "21"; then + echo "Installation de Java 21..." + sdk install java 21.0.1-tem + sdk use java 21.0.1-tem +fi + +# Vérifier Android SDK +if [ ! -d "$HOME/Android/Sdk" ]; then + echo "Installation d'Android SDK..." + mkdir -p "$HOME/Android/Sdk/cmdline-tools" + cd "$HOME/Android/Sdk/cmdline-tools" + wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip + unzip -q commandlinetools-linux-9477386_latest.zip + mv cmdline-tools latest + rm commandlinetools-linux-9477386_latest.zip + cd - + + export ANDROID_HOME="$HOME/Android/Sdk" + export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH" + yes | sdkmanager --licenses || true + sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" +fi + +if [ ! -d "node_modules" ]; then + echo "Installation des dépendances Node.js..." + npm install --include=dev +else + echo "Dépendances Node.js déjà installées" +fi + +# Installer Capacitor si nécessaire +if ! npm list @capacitor/core > /dev/null 2>&1; then + echo "Installation de Capacitor..." + npm install @capacitor/core @capacitor/cli @capacitor/android +fi + +echo -e "${GREEN}✅ Dépendances OK${NC}" +echo "" + +# Étape 3: Build Next.js +echo -e "${BLUE}📦 Étape 3/6: Build Next.js (export statique)${NC}" +rm -rf .next out + +# Exclure temporairement les routes API pour l'export statique +if [ -d "app/api" ]; then + echo "Exclusion temporaire des routes API..." + mv app/api /tmp/api-backup-$$ + echo -e "${GREEN}✅ Routes API déplacées temporairement${NC}" +fi + +if npm run build; then + echo -e "${GREEN}✅ Build Next.js réussi${NC}" +else + echo -e "${YELLOW}⚠️ Build avec avertissements, continuation...${NC}" + npm run build -- --no-lint || true +fi + +# Restaurer les routes API +if [ -d "/tmp/api-backup-$$" ]; then + mv /tmp/api-backup-$$ app/api + echo -e "${GREEN}✅ Routes API restaurées${NC}" +fi + +echo "" + +# Vérifier que le dossier out existe +if [ ! -d "out" ]; then + echo "❌ Erreur: Le dossier 'out' n'a pas été créé" + exit 1 +fi + +# Étape 4: Initialiser/Configurer Capacitor +echo -e "${BLUE}📦 Étape 4/6: Configuration Capacitor${NC}" + +# Initialiser Capacitor si nécessaire +if [ ! -f "capacitor.config.ts" ]; then + echo "Initialisation de Capacitor..." + npx cap init "Compagnon Admin" com.pensionmarama.admin --web-dir=out +else + echo "Capacitor déjà initialisé" + # Mettre à jour la config pour pointer vers out + cat > capacitor.config.ts << 'EOF' +import { CapacitorConfig } from '@capacitor/cli'; + +const config: CapacitorConfig = { + appId: 'com.pensionmarama.admin', + appName: 'Compagnon Admin', + webDir: 'out', + server: { + androidScheme: 'https' + } +}; + +export default config; +EOF +fi + +echo -e "${GREEN}✅ Capacitor configuré${NC}" +echo "" + +# Étape 5: Synchroniser avec Android +echo -e "${BLUE}📦 Étape 5/6: Synchronisation Android${NC}" + +# Ajouter Android si nécessaire +if [ ! -d "android" ]; then + echo "Ajout de la plateforme Android..." + npx cap add android +fi + +# Synchroniser +echo "Synchronisation Capacitor..." +npx cap sync android + +echo -e "${GREEN}✅ Android synchronisé${NC}" +echo "" + +# Étape 6: Générer l'APK +echo -e "${BLUE}📦 Étape 6/6: Génération de l'APK${NC}" + +export ANDROID_HOME="$HOME/Android/Sdk" +export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH" + +cd android +./gradlew assembleDebug +cd .. + +# Copier l'APK généré +if [ -f "android/app/build/outputs/apk/debug/app-debug.apk" ]; then + mkdir -p dist + cp android/app/build/outputs/apk/debug/app-debug.apk dist/compagnon-admin-debug.apk + echo "" + echo -e "${GREEN}========================================${NC}" + echo -e "${GREEN}✅ APK ADMIN GÉNÉRÉ AVEC SUCCÈS !${NC}" + echo -e "${GREEN}========================================${NC}" + echo "" + echo -e "📱 Fichier: ${BLUE}dist/compagnon-admin-debug.apk${NC}" + APK_SIZE=$(du -h dist/compagnon-admin-debug.apk | cut -f1) + echo -e "📊 Taille: ${BLUE}${APK_SIZE}${NC}" + echo "" + echo -e "${YELLOW}📤 Pour distribuer aux administrateurs:${NC}" + echo " 1. Envoyez le fichier dist/compagnon-admin-debug.apk" + echo " 2. Demandez-leur d'activer 'Sources inconnues'" + echo " 3. Installer l'APK sur leur téléphone" + echo "" + echo -e "${YELLOW}🔄 Pour mettre à jour:${NC}" + echo " Relancez simplement ce script !" + echo "" +else + echo "❌ L'APK n'a pas été généré. Vérifiez les erreurs ci-dessus." + exit 1 +fi +