# 📜 Scripts iOS - Guide d'utilisation **Date de crĂ©ation** : 14/10/2025 **Objectif** : Automatiser les corrections nĂ©cessaires pour compiler l'application iOS --- ## 📂 Scripts disponibles ### 1. `fix-permission-handler.sh` ✅ **TESTÉ ET FONCTIONNEL** **ProblĂšme corrigĂ©** : Le package `permission_handler_apple-9.4.7` embarque ses propres headers Flutter qui crĂ©ent des conflits de compilation. **Actions effectuĂ©es** : - ✅ DĂ©tecte automatiquement la version du package dans `.pub-cache` - ✅ Supprime le dossier `/ios/Classes/Flutter/` embarquĂ© - ✅ Corrige les imports dans `PermissionHandlerPlugin.h` - ✅ Corrige les imports dans `PermissionManager.h` **Usage** : ```bash ./fix-permission-handler.sh ``` **Quand l'exĂ©cuter** : - ✅ AprĂšs chaque `flutter pub get` - ✅ Avant `pod install` - ✅ Si erreurs de compilation `'FlutterAppDelegate' has different definitions` **Sortie attendue** : ``` 🔧 Fix permission_handler_apple - Correction des conflits Flutter headers 📩 Package trouvĂ© : /Users/pierre/.pub-cache/.../permission_handler_apple-9.4.7 ✅ Dossier Flutter supprimĂ© ✅ PermissionHandlerPlugin.h corrigĂ© ✅ PermissionManager.h corrigĂ© 🎉 Correction terminĂ©e avec succĂšs ! ``` --- ### 2. `fix-nfc-manager.sh` ⚠ **PRÉSENT MAIS NON TESTÉ SUR MAC** **ProblĂšme corrigĂ©** : Le package `nfc_manager-3.3.0` manque la dĂ©claration `namespace` requise par Android Gradle Plugin 8+. **Note** : Ce script Ă©tait fonctionnel sur Debian Linux. Sur Mac, il semble y avoir une erreur `sed` Ă  corriger. **Actions prĂ©vues** : - Ajout du `namespace` dans `AndroidManifest.xml` - Correction du fichier `build.gradle` - Correction du fichier `Translator.kt` **Statut** : ⚠ À dĂ©bugger si nĂ©cessaire (erreur sed dĂ©tectĂ©e) --- ### 3. `fix-ios-packages.sh` (Script maĂźtre) ⚠ **EN DÉVELOPPEMENT** **Objectif** : ExĂ©cuter tous les scripts de correction iOS en une seule commande. **Inclut** : - `fix-nfc-manager.sh` (si corrigĂ©) - `fix-permission-handler.sh` ✅ **Statut actuel** : Fonctionne partiellement (erreur sed dans fix-nfc-manager.sh) --- ## 🚀 Workflow de build iOS complet ### Option A : Build iOS uniquement (recommandĂ© actuellement) ```bash # 1. Nettoyer flutter clean # 2. RĂ©cupĂ©rer les dĂ©pendances flutter pub get # 3. 🔧 Corriger permission_handler_apple ./fix-permission-handler.sh # 4. Installer les pods cd ios && pod install && cd .. # 5. Compiler flutter build ios --release --no-codesign ``` ### Option B : Build complet (Web + Android + iOS) **Android** : ```bash # Le script fix-nfc-manager.sh devrait ĂȘtre exĂ©cutĂ© ici flutter build appbundle --release ``` **iOS** : ```bash # Utiliser Option A ci-dessus ``` **Web** : ```bash flutter build web --release ``` --- ## ✅ VĂ©rifications avant compilation iOS ### 1. Version Flutter correcte ```bash flutter --version # Attendu : Flutter 3.24.5 ‱ channel [user-branch] # Dart 3.5.4 ‱ DevTools 2.37.3 ``` ### 2. Fichiers de configuration rĂ©gĂ©nĂ©rĂ©s ```bash cat ios/Flutter/Generated.xcconfig | grep FLUTTER_ROOT # Attendu : FLUTTER_ROOT=/Users/pierre/dev/flutter ``` ### 3. Permission handler corrigĂ© ```bash ls ~/.pub-cache/hosted/pub.dev/permission_handler_apple-*/ios/Classes/Flutter/ # Attendu : ls: .../Flutter/: No such file or directory (= bon signe !) ``` ### 4. Pods installĂ©s ```bash cat ios/Podfile.lock | grep "permission_handler_apple" # Attendu : - permission_handler_apple (9.3.0): ``` --- ## 🐛 DĂ©pannage ### Erreur : `'FlutterAppDelegate' has different definitions` **Solution** : ExĂ©cuter `./fix-permission-handler.sh` ### Erreur : `Flutter/Flutter.h: No such file or directory` **Causes possibles** : 1. Le script `fix-permission-handler.sh` n'a pas Ă©tĂ© exĂ©cutĂ© 2. Les imports n'ont pas Ă©tĂ© corrigĂ©s correctement 3. Le cache build doit ĂȘtre nettoyĂ© **Solution** : ```bash ./fix-permission-handler.sh rm -rf build/ios ios/Pods cd ios && pod install && cd .. flutter build ios --release --no-codesign ``` ### Erreur : `Invalid Podfile file: cannot load such file -- podhelper` **Cause** : Le fichier `ios/Flutter/Generated.xcconfig` contient de mauvais chemins (Linux au lieu de Mac). **Solution** : ```bash rm ios/Flutter/Generated.xcconfig flutter pub get ``` ### Build rĂ©ussi mais warnings CocoaPods **Warning** : ``` [!] CocoaPods did not set the base configuration of your project... ``` **Impact** : ⚠ Non bloquant, la compilation fonctionne **Solution** : (Optionnel) Configurer manuellement dans Xcode les fichiers de configuration CocoaPods --- ## 📝 Historique des corrections ### 14/10/2025 - Solution finale trouvĂ©e ✅ **ProblĂšme** : Compilation iOS impossible avec erreurs de conflits de dĂ©finitions Flutter **Cause identifiĂ©e** : `permission_handler_apple-9.4.7` embarquait ses propres headers Flutter **Solution appliquĂ©e** : 1. ✅ Suppression du dossier `/ios/Classes/Flutter/` du package 2. ✅ Modification des imports : `"Flutter/Flutter.h"` → `` 3. ✅ CrĂ©ation du script `fix-permission-handler.sh` **RĂ©sultat** : ``` ✓ Built build/ios/iphoneos/Runner.app (107.4MB) Xcode build done. 59,1s ``` ### 13/10/2025 - Suppression packages problĂ©matiques **Packages supprimĂ©s** : `package_info_plus`, `network_info_plus`, `sensors_plus` **Raison** : Erreurs `'Flutter/Flutter.h' file not found` persistantes **Impact** : Perte de fonctionnalitĂ©s mineures (mode boussole, diagnostic WiFi) ### 11/10/2025 - Downgrade vers Flutter 3.24.5 LTS **Versions testĂ©es sans succĂšs** : - ❌ Flutter 3.35.6 (bugs SwiftPM) - ❌ Flutter 3.35.5 (bugs SwiftPM) - ❌ Flutter 3.27.2 (incompatibilitĂ©s) **Version retenue** : Flutter 3.24.5 LTS + Dart 3.5.4 --- ## 🔗 RĂ©fĂ©rences ### Documentation - `SOLUTION-IOS.md` - Guide complet de la solution finale - `README-IOS.md` - Historique dĂ©taillĂ© des tentatives - `TRANSFERT-MAC.md` - Guide de transfert Linux → Mac ### Scripts - `fix-permission-handler.sh` - ✅ Fonctionnel - `fix-nfc-manager.sh` - ⚠ À dĂ©bugger (erreur sed) - `fix-ios-packages.sh` - ⚠ DĂ©pend du fix nfc_manager --- **Auteur** : Claude Code + Pierre **Version** : 1.0.0 **DerniĂšre mise Ă  jour** : 14/10/2025 12:45 ✅ **Le script `fix-permission-handler.sh` est prĂȘt Ă  l'emploi !**