- 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>
6.3 KiB
✅ 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
✓ 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é
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
// AVANT
#import "Flutter/Flutter.h"
// APRÈS
#import <Flutter/Flutter.h>
Fichier : PermissionManager.h
// AVANT
#import "Flutter/Flutter.h"
// APRÈS
#import <Flutter/Flutter.h>
3. Nettoyage du cache et réinstallation
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 :
./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 :
./fix-ios-packages.sh
📋 Workflow de build iOS recommandé
Build complet (après modifications de code)
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)
flutter build ios --release --no-codesign
Après chaque flutter pub get
./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é parAppInfoServiceauto-généré - ❌
network_info_plus→ Remplacé parNetworkInterfacenatif Dart (dart:io) - ❌
sensors_plus→ Mode boussole retiré (feature optionnelle)
Impact fonctionnel : Minimal (fonctionnalités mineures perdues)
🎯 Prochaines étapes
Pour l'App Store
-
Ouvrir Xcode :
open ios/Runner.xcworkspace -
Vérifier la configuration :
- Team ID :
6WT84NWCTC - Bundle ID :
fr.geosector.app3 - Version :
3.3.6 (336)
- Team ID :
-
Créer l'archive :
- Product > Clean Build Folder (Cmd+Shift+K)
- Product > Archive
-
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èmesTRANSFERT-MAC.md- Guide de transfert depuis Debian Linuxfix-permission-handler.sh- Script de correction automatiquefix-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 :
- Vérifier la compatibilité des packages
- Réexécuter
./fix-ios-packages.sh - 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 !