Files
geo/app/SOLUTION-IOS.md
Pierre 0687900564 fix: Récupérer l'opération active depuis la table operations
- Corrige l'erreur SQL 'Unknown column fk_operation in users'
- L'opération active est récupérée depuis operations.chk_active = 1
- Jointure avec users pour filtrer par entité de l'admin créateur
- Query: SELECT o.id FROM operations o INNER JOIN users u ON u.fk_entite = o.fk_entite WHERE u.id = ? AND o.chk_active = 1
2026-01-26 16:57:08 +01:00

6.3 KiB
Executable File

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 !