# 🍎 Guide de transfert et compilation iOS sur Mac mini **Date** : 14/10/2025 **Projet** : GEOSECTOR v3.3.6 (Build 336) **Source** : Debian Linux (minipi1) **Destination** : Mac mini (compilation iOS) --- ## ✅ Corrections effectuĂ©es sur Linux (Debian) ### 🎉 Android : COMPILATION RÉUSSIE **ProblĂšmes rĂ©solus** : 1. ✅ JDK incomplet → Installation `openjdk-21-jdk-headless` 2. ✅ nfc_manager 3.3.0 → Triple patch automatique (AndroidManifest + build.gradle + Translator.kt) 3. ✅ Conflit BouncyCastle/Stripe → Configuration `packaging` dans build.gradle.kts **Scripts créés** : - ✅ `fix-nfc-manager.sh` - Patch automatique nfc_manager 3.3.0 (3 corrections) - ✅ `android.sh` - Build Android avec auto-patch intĂ©grĂ© - ✅ `deploy-app.sh` - DĂ©ploiement DEV avec auto-patch et nettoyage cache **RĂ©sultat** : Bundle Android gĂ©nĂ©rĂ© avec succĂšs → `geosector-336.aab` --- ### 📩 Packages Flutter modifiĂ©s #### Packages supprimĂ©s (incompatibles iOS) Ces packages causaient des erreurs `'Flutter/Flutter.h' file not found` sur iOS : | Package | Action | Remplacement | |---------|--------|--------------| | `package_info_plus` | ❌ SUPPRIMÉ | ✅ `AppInfoService` auto-gĂ©nĂ©rĂ© dans `lib/core/services/app_info_service.dart` | | `network_info_plus` | ❌ SUPPRIMÉ | ✅ `NetworkInterface` natif Dart (dart:io) | | `sensors_plus` | ❌ SUPPRIMÉ | ⚠ Mode boussole retirĂ© (feature optionnelle peu utilisĂ©e) | **Impact fonctionnel** : Minimal - Perte de fonctionnalitĂ©s mineures (mode boussole, diagnostic WiFi SSID/BSSID) #### Configuration finale pubspec.yaml ```yaml dependencies: flutter: sdk: flutter environment: sdk: '>=3.0.0 <4.0.0' # Flutter 3.24.5 LTS + Dart 3.5.4 # Packages downgradĂ©s pour compatibilitĂ© ``` **Versions clĂ©s** : - `nfc_manager: 3.3.0` - NĂ©cessite patch (automatique via scripts) - `syncfusion_flutter_charts: 27.2.5` - Sweet spot compatible - `geolocator: 13.0.3` - Sans toARGB32() - `battery_plus: 6.0.3` - Fix Gradle AGP 8 - `connectivity_plus: 6.0.5` - Fix Gradle AGP 8 --- ## 📋 Étapes de compilation iOS sur Mac mini ### 1ïžâƒŁ DĂ©compression et setup initial ```bash # DĂ©compresser l'archive cd ~/dev/geosector unzip app-14oct2025.zip cd app # VĂ©rifier la version Flutter (doit ĂȘtre 3.24.5 LTS) flutter --version # Flutter 3.24.5 ‱ channel stable # Dart 3.5.4 ``` ### 2ïžâƒŁ Installation des dĂ©pendances ```bash # Nettoyer (par prĂ©caution) flutter clean # RĂ©cupĂ©rer les dĂ©pendances Flutter flutter pub get # Installer les pods iOS cd ios pod install cd .. ``` **RĂ©sultat attendu** : - ✅ 25 pods installĂ©s - ✅ Aucune erreur de dĂ©pendances ### 3ïžâƒŁ VĂ©rification de la configuration iOS **Fichiers critiques Ă  vĂ©rifier** : #### `ios/Runner/Info.plist` Doit contenir les permissions : - ✅ Localisation (GPS) - ✅ NFC (tags secteurs) - ✅ Bluetooth (terminaux Stripe) - ✅ CamĂ©ra (scan cartes) - ✅ Photos (justificatifs) #### `ios/Runner/Runner.entitlements` Doit contenir : - ✅ NFC Tag Reading (NDEF, TAG) - ✅ Stripe Terminal - Tap to Pay on iPhone - ✅ Network Access - ✅ Keychain Sharing ### 4ïžâƒŁ Compilation de test (sans signature) ```bash # Build iOS en release sans codesign flutter build ios --release --no-codesign ``` **RĂ©sultats possibles** : #### ✅ Si compilation rĂ©ussit → Passer directement Ă  l'Ă©tape 5 (Xcode) #### ❌ Si erreurs de compilation Consulter `README-IOS.md` (section "Diagnostic final - ProblĂšme structurel iOS") **Erreurs possibles** : - `'Flutter/Flutter.h' file not found` → ProblĂšme SwiftPM (voir README-IOS.md) - Erreurs de pods → RĂ©exĂ©cuter `pod install` ### 5ïžâƒŁ Configuration Xcode ```bash # Ouvrir le workspace Xcode open ios/Runner.xcworkspace ``` #### Dans Xcode : **A. VĂ©rifier le Team ID** 1. SĂ©lectionner le target `Runner` 2. Onglet `Signing & Capabilities` 3. Team : `6WT84NWCTC` ✅ **B. VĂ©rifier Bundle Identifier** - Bundle ID : `fr.geosector.app3` ✅ **C. VĂ©rifier les Capabilities** - ✅ Near Field Communication Tag Reading - ⚠ Tap to Pay on iPhone (nĂ©cessite approbation Apple spĂ©ciale) **D. VĂ©rifier la version** - Version : `3.3.6` - Build : `336` ### 6ïžâƒŁ Archive pour App Store ```bash # Dans Xcode : # Product > Clean Build Folder (Cmd+Shift+K) # Product > Archive ``` **DurĂ©e estimĂ©e** : 5-10 minutes --- ## 🔧 RĂ©solution de problĂšmes iOS ### ProblĂšme : Erreur SwiftPM / Flutter.h **SymptĂŽme** : ``` 'Flutter/Flutter.h' file not found ``` **Causes possibles** : 1. Flutter 3.24.5 LTS avec packages rĂ©cents (incompatibilitĂ© SwiftPM) 2. Transition SwiftPM incomplĂšte dans l'Ă©cosystĂšme Flutter **Solutions documentĂ©es dans `README-IOS.md`** : - Option A : DĂ©sactiver SwiftPM (forcer CocoaPods pur) - Option B : Patcher manuellement les headers - Option C : Attendre Flutter 3.28+ LTS avec SwiftPM stable ### ProblĂšme : Pods non installĂ©s ```bash cd ios rm -rf Pods Podfile.lock pod install cd .. ``` ### ProblĂšme : Cache Flutter ```bash flutter clean rm -rf ios/Pods ios/Podfile.lock flutter pub get cd ios && pod install && cd .. ``` --- ## 📊 État actuel du projet | Plateforme | Statut | Notes | |------------|--------|-------| | **Web** | ✅ CompilĂ© | DĂ©ployable immĂ©diatement | | **Android** | ✅ CompilĂ© | Bundle prĂȘt : `geosector-336.aab` | | **iOS** | ⏳ En attente | Configuration Mac mini requise | --- ## 📂 Structure du projet transfĂ©rĂ© ``` app/ ├── fix-nfc-manager.sh # Script de patch nfc_manager (Android uniquement) ├── android.sh # Build Android avec auto-patch ├── deploy-app.sh # DĂ©ploiement DEV avec auto-patch ├── pubspec.yaml # Configuration finale Flutter 3.24.5 LTS ├── README-IOS.md # Guide dĂ©taillĂ© iOS (historique problĂšmes) ├── TRANSFERT-MAC.md # Ce fichier ├── docs/ │ └── TODO-APP.md # Documentation complĂšte (Phase 8 Android complĂ©tĂ©e) ├── lib/ │ └── core/services/ │ └── app_info_service.dart # Remplace package_info_plus (auto-gĂ©nĂ©rĂ©) ├── android/ │ └── app/build.gradle.kts # Configuration packaging BouncyCastle └── ios/ ├── Runner/ │ ├── Info.plist # Permissions iOS │ └── Runner.entitlements # Entitlements Stripe Tap to Pay └── Podfile # CocoaPods configuration ``` --- ## 🎯 Objectif final iOS **CrĂ©er l'archive App Store** : 1. ✅ Compilation iOS rĂ©ussie 2. ✅ Validation de l'archive (Organizer) 3. ✅ Upload vers App Store Connect 4. ✅ Configuration mĂ©tadonnĂ©es + captures d'Ă©cran 5. ✅ Soumission pour rĂ©vision Apple **Deadline** : Aucune urgence (Android fonctionnel pour tests) --- ## 📞 Support et documentation **Documents de rĂ©fĂ©rence** : - `README-IOS.md` - Guide complet iOS avec historique des tentatives - `docs/TODO-APP.md` - Documentation technique complĂšte (Phase 8 Android) - Apple Developer : https://developer.apple.com - App Store Connect : https://appstoreconnect.apple.com **Configuration serveur** : - DEV : dapp.geosector.fr - REC : rapp.geosector.fr - PROD : app3.geosector.fr --- **✅ Le projet est prĂȘt pour le transfert et la compilation iOS !** **Prochaines Ă©tapes** : 1. Zipper le dossier `app/` 2. TransfĂ©rer sur Mac mini (Samba/rsync) 3. Suivre les Ă©tapes 1-6 ci-dessus 4. Croiser les doigts pour la compilation iOS đŸ€ž **Bonne chance !** 🚀