# 📜 Scripts de Build GEOSECTOR **Version** : 3.3.6 **Date** : 14/10/2025 --- ## 📦 Scripts disponibles | Script | Plateforme | Description | Statut | |--------|-----------|-------------|--------| | `android.sh` | Android | Build bundle (.aab) + APK optionnel | ✅ Fonctionnel | | `ios.sh` | iOS | Build + Archive Xcode complète | ✅ **NOUVEAU** | | `fix-permission-handler.sh` | iOS | Patch package problématique | ✅ Testé | | `fix-nfc-manager.sh` | Android | Patch namespace Android | ⚠️ À vérifier | | `fix-ios-packages.sh` | iOS | Script maître (tous les patchs) | ⚠️ Dépend du fix nfc | | `deploy-app.sh` | DEV | Déploiement sur dapp.geosector.fr | ✅ Existant | --- ## 🍎 Script iOS : `ios.sh` ### Fonctionnalités Le script `ios.sh` automatise **TOUTE** la chaîne de build iOS : 1. ✅ **Vérifications préliminaires** - Vérification Flutter 3.24.5 LTS - Vérification CocoaPods - Vérification Xcode - Vérification que nous sommes sur macOS 2. ✅ **Nettoyage complet** - `flutter clean` - Suppression `ios/Pods` - Suppression `ios/Podfile.lock` - Suppression `ios/.symlinks` - Suppression `build/ios` 3. ✅ **Récupération des dépendances** - `flutter pub get` - Vérification des chemins Flutter (détection erreurs Linux) 4. ✅ **Patch permission_handler_apple** - Exécution automatique de `fix-permission-handler.sh` - Correction des conflits de headers Flutter 5. ✅ **Installation des pods** - `cd ios && pod install` - Vérification du workspace Xcode 6. ✅ **Analyse du code** - `flutter analyze` (non bloquant) - Possibilité de continuer malgré les warnings 7. ✅ **Compilation iOS** - `flutter build ios --release --no-codesign` - Affichage de la taille de l'app 8. ✅ **Archive Xcode (optionnel)** - Ouverture de Xcode - Instructions pas à pas - Attente de la fin de l'archive ### Usage #### Build standard (avec archive Xcode) ```bash ./ios.sh ``` **Étapes** : 1. Exécute toutes les étapes automatiquement 2. Ouvre Xcode à la fin 3. Affiche les instructions pour créer l'archive 4. Attend que vous appuyiez sur Entrée après l'archive **Durée estimée** : 5-10 minutes (hors archive Xcode) #### Build rapide (sans archive) ```bash ./ios.sh --skip-archive ``` **Étapes** : 1. Exécute toutes les étapes jusqu'à la compilation 2. N'ouvre pas Xcode 3. Vous laisse créer l'archive manuellement plus tard **Durée estimée** : 3-5 minutes ### Sorties du script #### Succès ``` [INFO] ========================================= [SUCCESS] BUILD iOS TERMINÉ AVEC SUCCÈS ! [INFO] ========================================= Version : 3.3.6 (336) Bundle ID : fr.geosector.app3 Application : build/ios/iphoneos/Runner.app Prochaines étapes (dans Xcode) : 1. ✅ Build iOS réussi 2. ⏳ Créer l'archive (Product > Archive) 3. ⏳ Valider l'archive (Organizer > Validate App) 4. ⏳ Upload vers App Store Connect ``` #### Erreur ``` [ERROR] Échec de la compilation iOS [ERROR] Consultez les logs ci-dessus pour plus de détails ``` ### Gestion des erreurs Le script s'arrête automatiquement en cas d'erreur et affiche : - La ligne de l'erreur - Un message explicatif - Les logs de la commande qui a échoué --- ## 🤖 Script Android : `android.sh` ### Fonctionnalités 1. ✅ Nettoyage du projet (`flutter clean`) 2. ✅ Récupération des dépendances (`flutter pub get`) 3. ✅ Patch nfc_manager automatique 4. ✅ Analyse du code Dart 5. ✅ Génération du bundle (.aab) 6. ✅ Copie du bundle avec nom versionné 7. ✅ Génération optionnelle de l'APK ### Usage ```bash ./android.sh ``` **Sortie** : `geosector-336.aab` (+ optionnel `geosector-336.apk`) --- ## 🔧 Scripts de correction ### `fix-permission-handler.sh` (iOS uniquement) **Problème corrigé** : Conflits de headers Flutter dans `permission_handler_apple-9.4.7` **Actions** : 1. Supprime `/ios/Classes/Flutter/` du package 2. Corrige les imports dans `PermissionHandlerPlugin.h` 3. Corrige les imports dans `PermissionManager.h` **Usage** : ```bash ./fix-permission-handler.sh ``` **Quand l'utiliser** : - Automatiquement via `ios.sh` - Manuellement après `flutter pub get` - Si erreur `'FlutterAppDelegate' has different definitions` --- ### `fix-nfc-manager.sh` (Android uniquement) **Problème corrigé** : Namespace Android manquant dans `nfc_manager-3.3.0` **Actions** : 1. Ajoute `namespace` dans `AndroidManifest.xml` 2. Corrige `build.gradle` 3. Corrige `Translator.kt` **Usage** : ```bash ./fix-nfc-manager.sh ``` **Quand l'utiliser** : - Automatiquement via `android.sh` - Manuellement après `flutter pub get` - Si erreur de compilation Android Gradle **⚠️ Note** : Sur macOS, ce script peut avoir une erreur `sed`. À débugger si nécessaire. --- ## 🚀 Workflows recommandés ### Build iOS complet ```bash # Option 1 : Tout automatique ./ios.sh # Option 2 : Build sans archive ./ios.sh --skip-archive # Puis plus tard : open ios/Runner.xcworkspace # Product > Archive dans Xcode ``` ### Build Android complet ```bash ./android.sh # Génère : geosector-336.aab ``` ### Build Web ```bash flutter build web --release # Ou via deploy-app.sh pour DEV ``` ### Build toutes les plateformes ```bash # 1. Android ./android.sh # 2. iOS ./ios.sh --skip-archive # 3. Web flutter build web --release ``` --- ## 📋 Checklist avant build ### Avant `android.sh` - [ ] Flutter version correcte - [ ] Keystore présent : `android/app/geosector2025.jks` - [ ] Fichier `android/key.properties` configuré - [ ] Version incrémentée dans `pubspec.yaml` ### Avant `ios.sh` - [ ] Sur macOS - [ ] Flutter 3.24.5 LTS installé - [ ] Xcode installé et à jour - [ ] CocoaPods installé - [ ] Team ID configuré : `6WT84NWCTC` - [ ] Bundle ID correct : `fr.geosector.app3` - [ ] Version incrémentée dans `pubspec.yaml` - [ ] Script `fix-permission-handler.sh` présent --- ## 🐛 Dépannage ### Erreur : "Flutter n'est pas dans le PATH" **Solution** : ```bash # Ajouter Flutter au PATH export PATH="$PATH:$HOME/dev/flutter/bin" # Ou ajouter dans ~/.zshrc (Mac) ``` ### Erreur : "CocoaPods not installed" **Solution** : ```bash sudo gem install cocoapods ``` ### Erreur : "Invalid Podfile file" **Solution** : ```bash rm ios/Flutter/Generated.xcconfig flutter pub get ``` ### Erreur : "Build iOS failed" **Solutions** : 1. Vérifier que `fix-permission-handler.sh` a été exécuté 2. Nettoyer complètement : ```bash flutter clean rm -rf ios/Pods ios/Podfile.lock flutter pub get ./fix-permission-handler.sh cd ios && pod install ``` 3. Vérifier les logs Xcode pour l'erreur exacte ### Script `ios.sh` s'arrête à l'étape 3 **Cause** : Script `fix-permission-handler.sh` introuvable ou non exécutable **Solution** : ```bash chmod +x fix-permission-handler.sh ./ios.sh ``` --- ## 📊 Temps d'exécution estimés | Script | Durée | Notes | |--------|-------|-------| | `android.sh` | 5-10 min | Dépend de la machine | | `ios.sh` (sans archive) | 3-5 min | Sur Mac mini/MacBook | | `ios.sh` (avec archive) | 10-20 min | + temps Xcode Archive | | `fix-permission-handler.sh` | < 5 secondes | Très rapide | | `flutter clean` | 10-30 secondes | Variable | | `flutter pub get` | 30-60 secondes | Variable | | `pod install` | 30-90 secondes | Première fois plus long | --- ## 📝 Logs et debug ### Activer les logs détaillés **Android** : ```bash flutter build appbundle --release --verbose ``` **iOS** : ```bash flutter build ios --release --no-codesign --verbose ``` ### Voir les logs Xcode Dans Xcode après une erreur : - Product > Show Build Log (Cmd+B puis Cmd+7) - Ou dans Terminal : ```bash tail -f ~/Library/Logs/DiagnosticReports/xcodebuild* ``` --- ## 🔗 Références ### Documentation créée - `BUILD-IOS-SUCCESS.md` - Récapitulatif du succès iOS - `SOLUTION-IOS.md` - Guide complet de la solution - `SCRIPTS-IOS.md` - Documentation des scripts iOS - `README-SCRIPTS.md` - Ce fichier ### Scripts - `ios.sh` - ✅ Script maître iOS - `android.sh` - ✅ Script maître Android - `fix-permission-handler.sh` - ✅ Patch iOS - `fix-nfc-manager.sh` - ⚠️ Patch Android (à vérifier) --- ## 🎯 Prochaines améliorations possibles ### Script `ios.sh` - [ ] Création de l'archive via ligne de commande (sans ouvrir Xcode) - [ ] Upload automatique vers App Store Connect via `xcrun altool` - [ ] Génération automatique des métadonnées App Store - [ ] Tests automatisés avant build ### Script `android.sh` - [ ] Upload automatique vers Google Play Console - [ ] Tests automatisés avant build - [ ] Génération de screenshots automatiques ### Scripts communs - [ ] Script `build-all.sh` - Build toutes les plateformes en une fois - [ ] Script `test-all.sh` - Tests automatisés toutes plateformes - [ ] Script `deploy-all.sh` - Déploiement vers tous les environnements --- **Auteur** : Claude Code + Pierre **Version** : 1.0.0 **Dernière mise à jour** : 14/10/2025 ✅ **Les scripts `android.sh` et `ios.sh` sont prêts à l'emploi !**