Files
geo/app/SOLUTION-IOS.md
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

249 lines
6.3 KiB
Markdown

# ✅ Solution de compilation iOS - GEOSECTOR v3.3.6
**Date de résolution** : 14/10/2025
**Statut** : ✅ **RÉSOLU - Compilation iOS réussie**
**Version Flutter** : 3.24.5 LTS + Dart 3.5.4
---
## 🎉 Résultat final
```bash
✓ Built build/ios/iphoneos/Runner.app (107.4MB)
```
**Temps de compilation** : 59,1 secondes
**Erreurs** : 0
**Warnings** : Configuration CocoaPods (non bloquant)
---
## 🔍 Problème initial
Après 5 tentatives avec différentes versions de Flutter (3.35.6, 3.35.5, 3.27.2, 3.24.5), l'application rencontrait systématiquement des erreurs :
```
Error (Xcode): 'FlutterAppDelegate' has different definitions in different modules
Error (Xcode): 'FlutterViewController' has different definitions in different modules
Error (Xcode): 'FlutterEngine' has different definitions in different modules
```
**Cause racine** : Le package **`permission_handler_apple-9.4.7`** embarquait ses propres copies des headers Flutter dans `/ios/Classes/Flutter/`, créant un conflit de définitions avec les vrais headers Flutter du framework système.
---
## ✅ Solution appliquée
### 1. Suppression du dossier Flutter embarqué
```bash
rm -rf ~/.pub-cache/hosted/pub.dev/permission_handler_apple-9.4.7/ios/Classes/Flutter
```
### 2. Correction des imports dans les headers
**Fichier** : `PermissionHandlerPlugin.h`
```objc
// AVANT
#import "Flutter/Flutter.h"
// APRÈS
#import <Flutter/Flutter.h>
```
**Fichier** : `PermissionManager.h`
```objc
// AVANT
#import "Flutter/Flutter.h"
// APRÈS
#import <Flutter/Flutter.h>
```
### 3. Nettoyage du cache et réinstallation
```bash
rm -rf build/ios ios/Pods
cd ios && pod install && cd ..
flutter build ios --release --no-codesign
```
---
## 🤖 Scripts automatisés créés
### Script 1 : `fix-permission-handler.sh`
Corrige automatiquement le package `permission_handler_apple` :
- ✅ Détecte automatiquement la version installée
- ✅ Supprime le dossier `Flutter/` embarqué
- ✅ Corrige les imports dans les 2 fichiers `.h`
- ✅ Messages colorés avec statut de chaque étape
**Usage** :
```bash
./fix-permission-handler.sh
```
### Script 2 : `fix-ios-packages.sh` (Script maître)
Combine tous les fixes iOS (nfc_manager + permission_handler_apple) :
- ✅ Exécute `fix-nfc-manager.sh` (si présent)
- ✅ Exécute `fix-permission-handler.sh`
- ✅ Affiche le workflow complet de build iOS
**Usage** :
```bash
./fix-ios-packages.sh
```
---
## 📋 Workflow de build iOS recommandé
### Build complet (après modifications de code)
```bash
flutter clean
flutter pub get
./fix-ios-packages.sh
cd ios && pod install && cd ..
flutter build ios --release --no-codesign
```
### Build rapide (sans modification de dépendances)
```bash
flutter build ios --release --no-codesign
```
### Après chaque `flutter pub get`
```bash
./fix-ios-packages.sh
cd ios && pod install && cd ..
```
---
## 🔧 Configuration actuelle
### Versions
- **Flutter** : 3.24.5 LTS
- **Dart** : 3.5.4
- **Xcode** : 16.4
- **iOS Deployment Target** : 15.4+
### Packages critiques iOS
| Package | Version | Notes |
|---------|---------|-------|
| `permission_handler_apple` | 9.4.7 | ⚠️ Nécessite fix (script créé) |
| `nfc_manager` | 3.3.0 | ⚠️ Nécessite fix namespace Android |
| `flutter_stripe` | 11.5.0 | ✅ Compatible |
| `mek_stripe_terminal` | 4.6.0 | ✅ Tap to Pay on iPhone |
| `geolocator` | 13.0.4 | ✅ Compatible |
### Packages supprimés (causes d'erreurs)
Ces packages ont été supprimés car ils causaient des erreurs `'Flutter/Flutter.h' file not found` :
-`package_info_plus` → Remplacé par `AppInfoService` auto-généré
-`network_info_plus` → Remplacé par `NetworkInterface` natif Dart (dart:io)
-`sensors_plus` → Mode boussole retiré (feature optionnelle)
**Impact fonctionnel** : Minimal (fonctionnalités mineures perdues)
---
## 🎯 Prochaines étapes
### Pour l'App Store
1. **Ouvrir Xcode** :
```bash
open ios/Runner.xcworkspace
```
2. **Vérifier la configuration** :
- Team ID : `6WT84NWCTC`
- Bundle ID : `fr.geosector.app3`
- Version : `3.3.6 (336)`
3. **Créer l'archive** :
- Product > Clean Build Folder (Cmd+Shift+K)
- Product > Archive
4. **Uploader vers App Store Connect** :
- Organizer > Validate App
- Distribute App > Upload
### Tests recommandés
- ✅ Test sur simulateur iOS 15.4+
- ✅ Test sur device physique (iPhone)
- ✅ Validation Stripe Tap to Pay (nécessite approbation Apple)
- ✅ Test mode hors ligne
- ✅ Test géolocalisation GPS
---
## 📚 Références
### Documentation créée
- `README-IOS.md` - Historique complet des tentatives et problèmes
- `TRANSFERT-MAC.md` - Guide de transfert depuis Debian Linux
- `fix-permission-handler.sh` - Script de correction automatique
- `fix-ios-packages.sh` - Script maître de correction iOS
### Commits importants
- **13/10/2025** : Suppression packages problématiques (package_info_plus, network_info_plus, sensors_plus)
- **14/10/2025** : ✅ **Solution finale trouvée** - Fix permission_handler_apple
---
## ⚠️ Notes importantes
### Après chaque mise à jour Flutter
Si vous mettez à jour Flutter, vous devrez peut-être :
1. Vérifier la compatibilité des packages
2. Réexécuter `./fix-ios-packages.sh`
3. Réinstaller les pods : `cd ios && pod install`
### Problèmes potentiels futurs
Si `permission_handler_apple` se met à jour vers une version supérieure :
- Le script devrait continuer à fonctionner (détection automatique de version)
- Si problème : vérifier que le dossier `Flutter/` embarqué existe toujours
- Adapter le script si la structure du package change
### Packages à surveiller
Ces packages peuvent causer des problèmes similaires à l'avenir :
- `permission_handler_apple` (actuellement fixé)
- `package_info_plus` (si réintégré)
- `network_info_plus` (si réintégré)
- `sensors_plus` (si réintégré)
---
## 🙏 Remerciements
Cette solution a été trouvée après analyse approfondie de :
- Documentation Flutter sur la transition SwiftPM
- GitHub Issues flutter/flutter #137945
- Tests avec 5 versions différentes de Flutter
- Analyse du contenu des packages problématiques
---
**Auteur** : Claude Code + Pierre
**Version** : 1.0.0
**Dernière mise à jour** : 14/10/2025 12:30
**La compilation iOS fonctionne maintenant parfaitement avec Flutter 3.24.5 LTS !**