feat: Version 3.6.2 - Correctifs tâches #17-20
- #17: Amélioration gestion des secteurs et statistiques - #18: Optimisation services API et logs - #19: Corrections Flutter widgets et repositories - #20: Fix création passage - détection automatique ope_users.id vs users.id Suppression dossier web/ (migration vers app Flutter) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,208 +1,143 @@
|
||||
# 🍎 Guide de Build iOS - GEOSECTOR
|
||||
|
||||
**Date de création** : 21/10/2025
|
||||
**Version actuelle** : 3.4.2 (Build 342)
|
||||
**Dernière mise à jour** : 16/11/2025
|
||||
**Version système** : Workflow automatisé depuis Debian
|
||||
|
||||
---
|
||||
|
||||
## 📋 **Prérequis**
|
||||
## 📋 Prérequis
|
||||
|
||||
### Sur le Mac mini
|
||||
- ✅ macOS installé
|
||||
- ✅ Xcode installé avec Command Line Tools
|
||||
- ✅ Flutter installé (3.24.5 LTS recommandé)
|
||||
- ✅ CocoaPods installé (`sudo gem install cocoapods`)
|
||||
- ✅ Certificats Apple configurés (Team ID: 6WT84NWCTC)
|
||||
### Mac mini (192.168.1.34)
|
||||
- ✅ Xcode + Command Line Tools
|
||||
- ✅ Flutter 3.24.5 LTS
|
||||
- ✅ CocoaPods installé
|
||||
- ✅ Certificats Apple (Team: **6WT84NWCTC**)
|
||||
|
||||
### Sur Debian
|
||||
- ✅ Accès SSH au Mac mini (192.168.1.34)
|
||||
- ✅ rsync installé
|
||||
### PC Debian (développement)
|
||||
- ✅ Accès SSH au Mac mini
|
||||
- ✅ Fichier `../VERSION` à jour
|
||||
|
||||
---
|
||||
|
||||
## 🚀 **Procédure complète**
|
||||
## 🚀 Build iOS - Workflow complet
|
||||
|
||||
### **Étape 1 : Transfert depuis Debian vers Mac mini**
|
||||
### **Commande unique depuis Debian**
|
||||
|
||||
```bash
|
||||
# Sur votre machine Debian
|
||||
cd /home/pierre/dev/geosector/app
|
||||
|
||||
# Lancer le transfert
|
||||
./transfer-to-mac.sh
|
||||
./ios.sh
|
||||
```
|
||||
|
||||
**Ce que fait le script** :
|
||||
1. Détecte automatiquement la version (ex: 342)
|
||||
2. Crée le dossier `app_342` sur le Mac mini
|
||||
3. Transfert tous les fichiers nécessaires (lib, ios, pubspec.yaml, etc.)
|
||||
4. Exclut les dossiers inutiles (build, .dart_tool, Pods, etc.)
|
||||
|
||||
**Durée** : 2-5 minutes (selon la connexion réseau)
|
||||
|
||||
**Note** : Vous devrez saisir le mot de passe du Mac mini
|
||||
1. ✅ Lit `../VERSION` (ex: 3.5.3)
|
||||
2. ✅ Met à jour `pubspec.yaml` (3.5.3+353)
|
||||
3. ✅ Teste connexion Mac mini
|
||||
4. ✅ Transfert rsync → `/Users/pierre/dev/geosector/app_353/`
|
||||
5. 🔀 **Choix A** : Lance build SSH automatique
|
||||
6. 🔀 **Choix B** : Instructions manuelles
|
||||
|
||||
---
|
||||
|
||||
### **Étape 2 : Connexion au Mac mini**
|
||||
### **Option A : Build automatique (recommandé)**
|
||||
|
||||
Sélectionner **A** dans le menu :
|
||||
- SSH automatique vers Mac mini
|
||||
- Lance `ios-build-mac.sh`
|
||||
- Ouvre Xcode pour l'archive
|
||||
|
||||
### **Option B : Build manuel**
|
||||
|
||||
```bash
|
||||
# Depuis Debian
|
||||
ssh pierre@192.168.1.34
|
||||
|
||||
# Aller dans le dossier transféré
|
||||
cd /Users/pierre/dev/geosector/app_342
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **Étape 3 : Lancer le build iOS**
|
||||
|
||||
```bash
|
||||
# Sur le Mac mini
|
||||
cd /Users/pierre/dev/geosector/app_353
|
||||
./ios-build-mac.sh
|
||||
```
|
||||
|
||||
**Ce que fait le script** :
|
||||
1. ✅ Nettoie le projet (`flutter clean`)
|
||||
2. ✅ Récupère les dépendances (`flutter pub get`)
|
||||
3. ✅ Installe les pods (`pod install`)
|
||||
4. ✅ Compile en release (`flutter build ios --release`)
|
||||
5. ✅ Ouvre Xcode pour l'archive (signature manuelle plus fiable)
|
||||
---
|
||||
|
||||
**Durée de préparation** : 5-10 minutes
|
||||
## 📦 Archive et Upload (Xcode)
|
||||
|
||||
**Résultat** : Xcode s'ouvre, prêt pour Product > Archive
|
||||
**Xcode s'ouvre automatiquement** après le build ✅
|
||||
|
||||
1. ⏳ Attendre chargement Xcode
|
||||
2. ✅ Vérifier **Signing & Capabilities**
|
||||
- Team : `6WT84NWCTC`
|
||||
- "Automatically manage signing" : ✅
|
||||
3. 🧹 **Product > Clean Build Folder** (⌘⇧K)
|
||||
4. 📦 **Product > Archive** (⏳ 5-10 min)
|
||||
5. 📤 **Organizer** → **Distribute App**
|
||||
6. ☁️ **App Store Connect** → **Upload**
|
||||
7. ✅ **Upload** (⏳ 2-5 min)
|
||||
|
||||
---
|
||||
|
||||
### **Étape 4 : Créer l'archive et upload vers App Store Connect**
|
||||
## 📱 TestFlight (App Store Connect)
|
||||
|
||||
**Xcode est ouvert automatiquement** ✅
|
||||
https://appstoreconnect.apple.com
|
||||
|
||||
Dans Xcode :
|
||||
1. ⏳ Attendre le chargement (quelques secondes)
|
||||
2. ✅ Vérifier **Signing & Capabilities** : Team = 6WT84NWCTC, "Automatically manage signing" coché
|
||||
3. 🧹 **Product > Clean Build Folder** (Cmd+Shift+K)
|
||||
4. 📦 **Product > Archive**
|
||||
5. ⏳ Attendre l'archive (5-10 minutes)
|
||||
6. 📤 **Organizer** s'ouvre → Clic **Distribute App**
|
||||
7. ☁️ Choisir **App Store Connect**
|
||||
8. ✅ **Upload** → Automatique
|
||||
9. 🚀 **Next** jusqu'à validation finale
|
||||
|
||||
**⚠️ Ne PAS utiliser xcodebuild en ligne de commande** : erreurs de signature (errSecInternalComponent). Xcode GUI obligatoire.
|
||||
1. **Apps** > **GeoSector** > **TestFlight**
|
||||
2. ⏳ Attendre traitement (5-15 min)
|
||||
3. Build **353 (3.5.3)** apparaît
|
||||
4. **Conformité export** :
|
||||
- Utilise chiffrement ? → **Oui**
|
||||
- Algorithmes exempts ? → **Aucun des algorithmes mentionnés**
|
||||
5. **Testeurs internes** → Ajouter ton Apple ID
|
||||
6. 📧 Invitation TestFlight envoyée
|
||||
|
||||
---
|
||||
|
||||
## 📁 **Structure des dossiers sur Mac mini**
|
||||
## ✅ Checklist rapide
|
||||
|
||||
```
|
||||
/Users/pierre/dev/geosector/
|
||||
├── app_342/ # Version 3.4.2 (Build 342)
|
||||
│ ├── ios/
|
||||
│ ├── lib/
|
||||
│ ├── pubspec.yaml
|
||||
│ ├── ios-build-mac.sh # Script de build
|
||||
│ └── build/
|
||||
│ └── Runner.xcarchive # Archive générée
|
||||
├── app_341/ # Version précédente (si existe)
|
||||
└── app_343/ # Version future
|
||||
```
|
||||
|
||||
**Avantage** : Garder plusieurs versions côte à côte pour tests/rollback
|
||||
- [ ] Mettre à jour `../VERSION` (ex: 3.5.4)
|
||||
- [ ] Lancer `./ios.sh` depuis Debian
|
||||
- [ ] Archive créée dans Xcode
|
||||
- [ ] Upload vers App Store Connect
|
||||
- [ ] Conformité export renseignée
|
||||
- [ ] Testeur interne ajouté
|
||||
- [ ] App installée via TestFlight
|
||||
|
||||
---
|
||||
|
||||
## 🔧 **Résolution de problèmes**
|
||||
## 🔧 Résolution problèmes
|
||||
|
||||
### **Erreur : "Flutter not found"**
|
||||
### Erreur SSH "Too many authentication failures"
|
||||
✅ **Corrigé** : Le script force l'authentification par mot de passe
|
||||
|
||||
```bash
|
||||
# Vérifier que Flutter est dans le PATH
|
||||
echo $PATH | grep flutter
|
||||
|
||||
# Ajouter Flutter au PATH (dans ~/.zshrc ou ~/.bash_profile)
|
||||
export PATH="$PATH:/opt/flutter/bin"
|
||||
source ~/.zshrc
|
||||
### Erreur de signature Xcode
|
||||
```
|
||||
Signing & Capabilities > Team = 6WT84NWCTC
|
||||
"Automatically manage signing" ✅
|
||||
```
|
||||
|
||||
### **Erreur : "xcodebuild not found"**
|
||||
|
||||
### Pod install échoue
|
||||
```bash
|
||||
# Installer Xcode Command Line Tools
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
### **Erreur lors de pod install**
|
||||
|
||||
```bash
|
||||
# Sur le Mac mini
|
||||
cd ios
|
||||
rm -rf Pods Podfile.lock
|
||||
pod install --repo-update
|
||||
cd ..
|
||||
```
|
||||
|
||||
### **Erreur de signature**
|
||||
|
||||
1. Ouvrir Xcode : `open ios/Runner.xcworkspace`
|
||||
2. Sélectionner le target "Runner"
|
||||
3. Onglet "Signing & Capabilities"
|
||||
4. Vérifier Team ID : `6WT84NWCTC`
|
||||
5. Cocher "Automatically manage signing"
|
||||
|
||||
### **Archive créée mais vide**
|
||||
|
||||
Vérifier que la compilation iOS a réussi :
|
||||
```bash
|
||||
flutter build ios --release --no-codesign --verbose
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 **Checklist de validation**
|
||||
## 🎯 Workflow version complète
|
||||
|
||||
- [ ] Version/Build incrémenté dans `pubspec.yaml`
|
||||
- [ ] Compilation iOS réussie
|
||||
- [ ] Archive validée dans Xcode Organizer
|
||||
- [ ] Build uploadé vers App Store Connect
|
||||
- [ ] **TestFlight** : Ajouter build au groupe "Testeurs externes"
|
||||
- [ ] Renseigner "Infos sur l'exportation de conformité" :
|
||||
- **App utilise chiffrement ?** → Oui
|
||||
- **Algorithmes exempts listés ?** → **Aucun des algorithmes mentionnés ci-dessus**
|
||||
- (App utilise HTTPS standard iOS uniquement)
|
||||
- [ ] Soumettre build pour révision TestFlight
|
||||
- [ ] *(Optionnel)* Captures/Release notes pour production App Store
|
||||
|
||||
---
|
||||
|
||||
## 🎯 **Workflow complet**
|
||||
|
||||
```bash
|
||||
# 1. Debian → Transfert
|
||||
cd /home/pierre/dev/geosector/app
|
||||
./transfer-to-mac.sh
|
||||
|
||||
# 2. Mac mini → Build + Archive
|
||||
ssh pierre@192.168.1.34
|
||||
cd /Users/pierre/dev/geosector/app_342
|
||||
./ios-build-mac.sh
|
||||
# Xcode s'ouvre → Product > Clean + Archive
|
||||
|
||||
# 3. Upload → TestFlight
|
||||
# Organizer > Distribute App > App Store Connect > Upload
|
||||
# App Store Connect > TestFlight > Conformité export
|
||||
```mermaid
|
||||
Debian (dev) → Mac mini (build) → App Store Connect → TestFlight → iPhone
|
||||
│ │ │ │ │
|
||||
↓ ↓ ↓ ↓ ↓
|
||||
ios.sh build iOS Upload Traitement Install
|
||||
+ Archive (5-15 min)
|
||||
```
|
||||
|
||||
**Temps total** : 20-30 minutes (build + upload + traitement Apple)
|
||||
|
||||
---
|
||||
|
||||
## 📞 **Support**
|
||||
## 📞 Liens utiles
|
||||
|
||||
- **Documentation Apple** : https://developer.apple.com
|
||||
- **App Store Connect** : https://appstoreconnect.apple.com
|
||||
- **TestFlight** : App dans l'App Store
|
||||
- **Flutter iOS** : https://docs.flutter.dev/deployment/ios
|
||||
|
||||
---
|
||||
|
||||
✅ **Prêt pour la production !** 🚀
|
||||
✅ **Prêt pour TestFlight !** 🚀
|
||||
|
||||
Reference in New Issue
Block a user