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

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é 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 :

    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 !