Files
geo/app/TRANSFERT-MAC.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

287 lines
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🍎 Guide de transfert et compilation iOS sur Mac mini
**Date** : 14/10/2025
**Projet** : GEOSECTOR v3.3.6 (Build 336)
**Source** : Debian Linux (minipi1)
**Destination** : Mac mini (compilation iOS)
---
## ✅ Corrections effectuées sur Linux (Debian)
### 🎉 Android : COMPILATION RÉUSSIE
**Problèmes résolus** :
1. ✅ JDK incomplet → Installation `openjdk-21-jdk-headless`
2. ✅ nfc_manager 3.3.0 → Triple patch automatique (AndroidManifest + build.gradle + Translator.kt)
3. ✅ Conflit BouncyCastle/Stripe → Configuration `packaging` dans build.gradle.kts
**Scripts créés** :
-`fix-nfc-manager.sh` - Patch automatique nfc_manager 3.3.0 (3 corrections)
-`android.sh` - Build Android avec auto-patch intégré
-`deploy-app.sh` - Déploiement DEV avec auto-patch et nettoyage cache
**Résultat** : Bundle Android généré avec succès → `geosector-336.aab`
---
### 📦 Packages Flutter modifiés
#### Packages supprimés (incompatibles iOS)
Ces packages causaient des erreurs `'Flutter/Flutter.h' file not found` sur iOS :
| Package | Action | Remplacement |
|---------|--------|--------------|
| `package_info_plus` | ❌ SUPPRIMÉ | ✅ `AppInfoService` auto-généré dans `lib/core/services/app_info_service.dart` |
| `network_info_plus` | ❌ SUPPRIMÉ | ✅ `NetworkInterface` natif Dart (dart:io) |
| `sensors_plus` | ❌ SUPPRIMÉ | ⚠️ Mode boussole retiré (feature optionnelle peu utilisée) |
**Impact fonctionnel** : Minimal - Perte de fonctionnalités mineures (mode boussole, diagnostic WiFi SSID/BSSID)
#### Configuration finale pubspec.yaml
```yaml
dependencies:
flutter:
sdk: flutter
environment:
sdk: '>=3.0.0 <4.0.0'
# Flutter 3.24.5 LTS + Dart 3.5.4
# Packages downgradés pour compatibilité
```
**Versions clés** :
- `nfc_manager: 3.3.0` - Nécessite patch (automatique via scripts)
- `syncfusion_flutter_charts: 27.2.5` - Sweet spot compatible
- `geolocator: 13.0.3` - Sans toARGB32()
- `battery_plus: 6.0.3` - Fix Gradle AGP 8
- `connectivity_plus: 6.0.5` - Fix Gradle AGP 8
---
## 📋 Étapes de compilation iOS sur Mac mini
### 1⃣ Décompression et setup initial
```bash
# Décompresser l'archive
cd ~/dev/geosector
unzip app-14oct2025.zip
cd app
# Vérifier la version Flutter (doit être 3.24.5 LTS)
flutter --version
# Flutter 3.24.5 • channel stable
# Dart 3.5.4
```
### 2⃣ Installation des dépendances
```bash
# Nettoyer (par précaution)
flutter clean
# Récupérer les dépendances Flutter
flutter pub get
# Installer les pods iOS
cd ios
pod install
cd ..
```
**Résultat attendu** :
- ✅ 25 pods installés
- ✅ Aucune erreur de dépendances
### 3⃣ Vérification de la configuration iOS
**Fichiers critiques à vérifier** :
#### `ios/Runner/Info.plist`
Doit contenir les permissions :
- ✅ Localisation (GPS)
- ✅ NFC (tags secteurs)
- ✅ Bluetooth (terminaux Stripe)
- ✅ Caméra (scan cartes)
- ✅ Photos (justificatifs)
#### `ios/Runner/Runner.entitlements`
Doit contenir :
- ✅ NFC Tag Reading (NDEF, TAG)
- ✅ Stripe Terminal - Tap to Pay on iPhone
- ✅ Network Access
- ✅ Keychain Sharing
### 4⃣ Compilation de test (sans signature)
```bash
# Build iOS en release sans codesign
flutter build ios --release --no-codesign
```
**Résultats possibles** :
#### ✅ Si compilation réussit
→ Passer directement à l'étape 5 (Xcode)
#### ❌ Si erreurs de compilation
Consulter `README-IOS.md` (section "Diagnostic final - Problème structurel iOS")
**Erreurs possibles** :
- `'Flutter/Flutter.h' file not found` → Problème SwiftPM (voir README-IOS.md)
- Erreurs de pods → Réexécuter `pod install`
### 5⃣ Configuration Xcode
```bash
# Ouvrir le workspace Xcode
open ios/Runner.xcworkspace
```
#### Dans Xcode :
**A. Vérifier le Team ID**
1. Sélectionner le target `Runner`
2. Onglet `Signing & Capabilities`
3. Team : `6WT84NWCTC`
**B. Vérifier Bundle Identifier**
- Bundle ID : `fr.geosector.app3`
**C. Vérifier les Capabilities**
- ✅ Near Field Communication Tag Reading
- ⚠️ Tap to Pay on iPhone (nécessite approbation Apple spéciale)
**D. Vérifier la version**
- Version : `3.3.6`
- Build : `336`
### 6⃣ Archive pour App Store
```bash
# Dans Xcode :
# Product > Clean Build Folder (Cmd+Shift+K)
# Product > Archive
```
**Durée estimée** : 5-10 minutes
---
## 🔧 Résolution de problèmes iOS
### Problème : Erreur SwiftPM / Flutter.h
**Symptôme** :
```
'Flutter/Flutter.h' file not found
```
**Causes possibles** :
1. Flutter 3.24.5 LTS avec packages récents (incompatibilité SwiftPM)
2. Transition SwiftPM incomplète dans l'écosystème Flutter
**Solutions documentées dans `README-IOS.md`** :
- Option A : Désactiver SwiftPM (forcer CocoaPods pur)
- Option B : Patcher manuellement les headers
- Option C : Attendre Flutter 3.28+ LTS avec SwiftPM stable
### Problème : Pods non installés
```bash
cd ios
rm -rf Pods Podfile.lock
pod install
cd ..
```
### Problème : Cache Flutter
```bash
flutter clean
rm -rf ios/Pods ios/Podfile.lock
flutter pub get
cd ios && pod install && cd ..
```
---
## 📊 État actuel du projet
| Plateforme | Statut | Notes |
|------------|--------|-------|
| **Web** | ✅ Compilé | Déployable immédiatement |
| **Android** | ✅ Compilé | Bundle prêt : `geosector-336.aab` |
| **iOS** | ⏳ En attente | Configuration Mac mini requise |
---
## 📂 Structure du projet transféré
```
app/
├── fix-nfc-manager.sh # Script de patch nfc_manager (Android uniquement)
├── android.sh # Build Android avec auto-patch
├── deploy-app.sh # Déploiement DEV avec auto-patch
├── pubspec.yaml # Configuration finale Flutter 3.24.5 LTS
├── README-IOS.md # Guide détaillé iOS (historique problèmes)
├── TRANSFERT-MAC.md # Ce fichier
├── docs/
│ └── TODO-APP.md # Documentation complète (Phase 8 Android complétée)
├── lib/
│ └── core/services/
│ └── app_info_service.dart # Remplace package_info_plus (auto-généré)
├── android/
│ └── app/build.gradle.kts # Configuration packaging BouncyCastle
└── ios/
├── Runner/
│ ├── Info.plist # Permissions iOS
│ └── Runner.entitlements # Entitlements Stripe Tap to Pay
└── Podfile # CocoaPods configuration
```
---
## 🎯 Objectif final iOS
**Créer l'archive App Store** :
1. ✅ Compilation iOS réussie
2. ✅ Validation de l'archive (Organizer)
3. ✅ Upload vers App Store Connect
4. ✅ Configuration métadonnées + captures d'écran
5. ✅ Soumission pour révision Apple
**Deadline** : Aucune urgence (Android fonctionnel pour tests)
---
## 📞 Support et documentation
**Documents de référence** :
- `README-IOS.md` - Guide complet iOS avec historique des tentatives
- `docs/TODO-APP.md` - Documentation technique complète (Phase 8 Android)
- Apple Developer : https://developer.apple.com
- App Store Connect : https://appstoreconnect.apple.com
**Configuration serveur** :
- DEV : dapp.geosector.fr
- REC : rapp.geosector.fr
- PROD : app3.geosector.fr
---
**✅ Le projet est prêt pour le transfert et la compilation iOS !**
**Prochaines étapes** :
1. Zipper le dossier `app/`
2. Transférer sur Mac mini (Samba/rsync)
3. Suivre les étapes 1-6 ci-dessus
4. Croiser les doigts pour la compilation iOS 🤞
**Bonne chance !** 🚀