Files
geo/app/fastlane/scripts/android/android.sh
pierre 2f5946a184 feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD)
  * DEV: Clés TEST Pierre (mode test)
  * REC: Clés TEST Client (mode test)
  * PROD: Clés LIVE Client (mode live)
- Ajout de la gestion des bases de données immeubles/bâtiments
  * Configuration buildings_database pour DEV/REC/PROD
  * Service BuildingService pour enrichissement des adresses
- Optimisations pages et améliorations ergonomie
- Mises à jour des dépendances Composer
- Nettoyage des fichiers obsolètes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 18:26:27 +01:00

211 lines
5.8 KiB
Bash
Executable File

#!/bin/bash
# Script de génération du bundle Android pour GEOSECTOR
# Usage: ./android.sh
set -e # Arrêter le script en cas d'erreur
# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Fonction pour afficher les messages
print_message() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
# Fonction pour gérer les erreurs
handle_error() {
print_error "Une erreur est survenue lors de l'exécution de la commande"
print_error "Ligne $1"
exit 1
}
# Trap pour capturer les erreurs
trap 'handle_error $LINENO' ERR
# Vérifier que nous sommes dans le bon dossier
if [ ! -f "pubspec.yaml" ]; then
print_error "Ce script doit être exécuté depuis le dossier racine de l'application Flutter"
print_error "Fichier pubspec.yaml introuvable"
exit 1
fi
print_message "========================================="
print_message " GEOSECTOR - Génération Bundle Android"
print_message "========================================="
echo
# Vérifier que Flutter est installé
if ! command -v flutter &> /dev/null; then
print_error "Flutter n'est pas installé ou n'est pas dans le PATH"
exit 1
fi
# Récupérer la version depuis pubspec.yaml
VERSION=$(grep "^version:" pubspec.yaml | sed 's/version: //' | sed 's/+/-/')
if [ -z "$VERSION" ]; then
print_error "Impossible de récupérer la version depuis pubspec.yaml"
exit 1
fi
# Extraire le version code
VERSION_CODE=$(echo $VERSION | cut -d'-' -f2)
if [ -z "$VERSION_CODE" ]; then
print_error "Impossible d'extraire le version code"
exit 1
fi
print_message "Version détectée : $VERSION"
print_message "Version code : $VERSION_CODE"
echo
# Vérifier la présence du keystore
if [ ! -f "android/app/geosector2025.jks" ]; then
print_error "Fichier keystore introuvable : android/app/geosector2025.jks"
exit 1
fi
# Vérifier la présence du fichier key.properties
if [ ! -f "android/key.properties" ]; then
print_error "Fichier key.properties introuvable"
print_error "Ce fichier est nécessaire pour signer l'application"
exit 1
fi
print_success "Configuration de signature vérifiée"
echo
# Étape 1 : Nettoyer le projet
print_message "Étape 1/4 : Nettoyage du projet..."
flutter clean
if [ $? -eq 0 ]; then
print_success "Projet nettoyé"
else
print_error "Échec du nettoyage du projet"
exit 1
fi
echo
# Étape 2 : Récupérer les dépendances
print_message "Étape 2/4 : Récupération des dépendances..."
flutter pub get
if [ $? -eq 0 ]; then
print_success "Dépendances récupérées"
else
print_error "Échec de la récupération des dépendances"
exit 1
fi
# Patch nfc_manager 3.3.0 (AndroidManifest namespace)
print_message "Application du patch nfc_manager 3.3.0..."
./fastlane/scripts/commun/fix-nfc-manager.sh || {
print_error "Échec du patch nfc_manager"
exit 1
}
echo
# Étape 3 : Analyser le code (optionnel mais recommandé)
print_message "Étape 3/4 : Analyse du code Dart..."
flutter analyze --no-fatal-infos --no-fatal-warnings || {
print_warning "Des avertissements ont été détectés dans le code"
read -p "Voulez-vous continuer malgré les avertissements ? (y/n) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
print_message "Génération annulée par l'utilisateur"
exit 0
fi
}
print_success "Analyse du code terminée"
echo
# Étape 4 : Générer le bundle
print_message "Étape 4/4 : Génération du bundle Android..."
print_message "Cette opération peut prendre plusieurs minutes..."
flutter build appbundle --release
if [ $? -eq 0 ]; then
print_success "Bundle généré avec succès"
else
print_error "Échec de la génération du bundle"
exit 1
fi
echo
# Vérifier que le bundle a été créé
BUNDLE_PATH="build/app/outputs/bundle/release/app-release.aab"
if [ ! -f "$BUNDLE_PATH" ]; then
print_error "Bundle introuvable à l'emplacement attendu : $BUNDLE_PATH"
exit 1
fi
# Copier le bundle à la racine avec le nouveau nom
FINAL_NAME="geosector-$VERSION_CODE.aab"
print_message "Copie du bundle vers : $FINAL_NAME"
cp "$BUNDLE_PATH" "$FINAL_NAME"
if [ -f "$FINAL_NAME" ]; then
print_success "Bundle copié avec succès"
# Afficher la taille du fichier
FILE_SIZE=$(du -h "$FINAL_NAME" | cut -f1)
print_message "Taille du bundle : $FILE_SIZE"
else
print_error "Échec de la copie du bundle"
exit 1
fi
echo
print_message "========================================="
print_success " GÉNÉRATION TERMINÉE AVEC SUCCÈS !"
print_message "========================================="
echo
print_message "Bundle généré : ${GREEN}$FINAL_NAME${NC}"
print_message "Version : $VERSION"
print_message "Chemin : $(pwd)/$FINAL_NAME"
echo
print_message "Prochaines étapes :"
print_message "1. Tester le bundle sur un appareil Android"
print_message "2. Uploader sur Google Play Console"
print_message "3. Soumettre pour review"
echo
# Optionnel : Générer aussi l'APK
read -p "Voulez-vous aussi générer l'APK pour des tests ? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
print_message "Génération de l'APK..."
flutter build apk --release
if [ $? -eq 0 ]; then
APK_PATH="build/app/outputs/flutter-apk/app-release.apk"
if [ -f "$APK_PATH" ]; then
APK_NAME="geosector-$VERSION_CODE.apk"
cp "$APK_PATH" "$APK_NAME"
print_success "APK généré : $APK_NAME"
# Afficher la taille de l'APK
APK_SIZE=$(du -h "$APK_NAME" | cut -f1)
print_message "Taille de l'APK : $APK_SIZE"
fi
else
print_warning "Échec de la génération de l'APK (le bundle a été créé avec succès)"
fi
fi
echo
print_success "Script terminé !"