- 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>
249 lines
6.3 KiB
Markdown
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 !**
|