Files
Compagnon-du-Lagon---Marama/scripts/build-apk-simple.sh
syoul 621e478705 APK Android généré avec succès
- Script build-apk-simple.sh créé pour build sans Docker
- Installation SDKMAN + Java 21 requise par Capacitor
- Configuration Android SDK via cmdline-tools
- APK généré: dist/compagnon-lagon-beta.apk
- Export statique Next.js configuré (next.config.export.js)
- Taille APK: ~5MB prêt pour distribution

Pour rebuild: ./scripts/build-apk-simple.sh
2025-11-23 10:38:42 +01:00

182 lines
4.7 KiB
Bash
Executable File

#!/bin/bash
set -e
echo "🚀 Build APK - 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}"
if [ ! -d "node_modules" ]; then
echo "Installation des dépendances..."
npm install --include=dev
else
echo "Dépendances 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
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
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 du Lagon" com.pensionmarama.app --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.app',
appName: 'Compagnon du Lagon',
webDir: 'out',
server: {
androidScheme: 'https'
}
};
export default config;
EOF
fi
# Ajouter la plateforme Android si nécessaire
if [ ! -d "android" ]; then
echo "Ajout de la plateforme Android..."
npx cap add android
else
echo "Plateforme Android déjà présente"
fi
echo -e "${GREEN}✅ Capacitor configuré${NC}"
echo ""
# Étape 5: Synchroniser les assets
echo -e "${BLUE}📦 Étape 5/6: Synchronisation des assets${NC}"
npx cap sync android
echo -e "${GREEN}✅ Assets synchronisés${NC}"
echo ""
# Étape 6: Build l'APK
echo -e "${BLUE}📦 Étape 6/6: Génération de l'APK${NC}"
cd android
# Vérifier que gradlew existe et est exécutable
if [ ! -f "./gradlew" ]; then
echo "❌ Erreur: gradlew n'existe pas"
exit 1
fi
chmod +x ./gradlew
# Build l'APK
echo "Construction de l'APK debug..."
./gradlew assembleDebug
cd ..
# Copier l'APK dans dist/
echo ""
echo -e "${BLUE}📦 Copie de l'APK...${NC}"
mkdir -p dist
if [ -f "android/app/build/outputs/apk/debug/app-debug.apk" ]; then
cp android/app/build/outputs/apk/debug/app-debug.apk dist/compagnon-lagon-beta.apk
# Afficher les infos
APK_SIZE=$(du -h dist/compagnon-lagon-beta.apk | cut -f1)
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}✅ APK GÉNÉRÉ AVEC SUCCÈS !${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e "📱 Fichier: ${BLUE}dist/compagnon-lagon-beta.apk${NC}"
echo -e "📊 Taille: ${BLUE}${APK_SIZE}${NC}"
echo ""
echo -e "${YELLOW}📤 Pour distribuer aux bêta-testeurs:${NC}"
echo " 1. Envoyez le fichier dist/compagnon-lagon-beta.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 -e "${RED}❌ Erreur: L'APK n'a pas été généré${NC}"
echo "Vérifiez les erreurs ci-dessus"
exit 1
fi
# Restaurer la config Next.js originale si elle existe
if [ -f "next.config.js.backup" ]; then
mv next.config.js.backup next.config.js
fi