- 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
210 lines
5.8 KiB
Bash
Executable File
210 lines
5.8 KiB
Bash
Executable File
#!/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
|
|
|