- 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>
955 lines
35 KiB
Markdown
955 lines
35 KiB
Markdown
# 📱 GEOSECTOR v3.3.4 - Publication iOS App Store
|
|
|
|
## 📋 Informations du projet
|
|
|
|
### Configuration actuelle
|
|
- **Version** : 3.3.6 (Build 336)
|
|
- **Bundle ID** : `fr.geosector.app3`
|
|
- **Team ID** : `6WT84NWCTC`
|
|
- **Display Name** : `GeoSector`
|
|
- **Bundle Name** : `GeoSector`
|
|
- **Deployment Target** : iOS 15.4+
|
|
- **Xcode** : 16.4
|
|
- **Flutter** : 3.24.5 LTS ✅ **Configuration stable** (downgrade depuis 3.35.5)
|
|
- **Dart** : 3.5.4
|
|
|
|
### Compte Apple Developer
|
|
- **Organisation** : Accessible via compte existant
|
|
- **Application existante** : Oui (ancienne version 2.7.1)
|
|
- **Type de mise à jour** : Refonte complète v3.3.4
|
|
|
|
---
|
|
|
|
## ✅ Étapes complétées
|
|
|
|
### 1. Environnement et dépendances
|
|
- [x] Flutter **downgrade vers 3.24.5 LTS** (11/10/2025 sur Debian, 13/10/2025 corrections)
|
|
- [x] Dart SDK downgrade vers 3.5.4
|
|
- [x] Packages ajustés pour compatibilité Flutter 3.24.5 (voir détails ci-dessous)
|
|
- [x] `flutter clean` exécuté
|
|
- [x] `flutter pub get` exécuté avec succès
|
|
- [x] CocoaPods mis à jour (1.16.2)
|
|
- [x] `pod install` exécuté (25 pods installés)
|
|
|
|
#### Packages downgradés (Flutter 3.24.5 LTS)
|
|
|
|
**Packages majeurs** :
|
|
- `syncfusion_flutter_charts` : 29.1.38 → **27.2.5** (sweet spot sans `withValues()` ni `markNeedsBuild()`)
|
|
- `geolocator` : 14.0.2 → **13.0.3** (sans `toARGB32()`)
|
|
- `geolocator_android` : forcé à **4.6.1**
|
|
- `battery_plus` : 7.0.0 → **6.0.3** (fix Gradle AGP 8)
|
|
- `connectivity_plus` : 7.0.0 → **6.0.5** (fix Gradle AGP 8)
|
|
- `nfc_manager` : 3.5.0 → **3.3.0** ⚠️ **Patch requis** (voir ci-dessous)
|
|
|
|
**Raison** : Packages v7.x incompatibles avec Flutter 3.24.5 LTS (propriété Gradle manquante)
|
|
|
|
**⚠️ Patch critique nfc_manager 3.3.0** :
|
|
```bash
|
|
# Requis après CHAQUE flutter pub get
|
|
./fix-nfc-manager.sh
|
|
```
|
|
|
|
**Pourquoi** :
|
|
- nfc_manager 3.3.0 est **obligatoire** pour Stripe Tap to Pay on iPhone
|
|
- Android Gradle Plugin 8+ nécessite `namespace` dans build.gradle
|
|
- Version 3.3.0 ne l'a pas → patch automatique via script
|
|
|
|
**Contenu du patch** : Ajoute `namespace 'io.flutter.plugins.nfc_manager'` dans `.pub-cache/hosted/pub.dev/nfc_manager-3.3.0/android/build.gradle:28`
|
|
|
|
### 2. Configuration du projet iOS
|
|
- [x] **CFBundleName** corrigé : `geosector_app` → `GeoSector`
|
|
- [x] **Bundle Identifier** vérifié : `fr.geosector.app3` ✅
|
|
- [x] **Team ID** configurée : `6WT84NWCTC` ✅
|
|
- [x] **Info.plist** configuré avec toutes les permissions :
|
|
- Localisation (GPS)
|
|
- NFC (tags secteurs)
|
|
- Bluetooth (terminaux Stripe)
|
|
- Caméra (scan cartes bancaires)
|
|
- Photos (justificatifs)
|
|
- Réseau local
|
|
- Contacts
|
|
|
|
### 3. Entitlements Stripe Tap to Pay
|
|
- [x] Fichier `Runner.entitlements` créé avec :
|
|
- ✅ NFC Tag Reading (NDEF, TAG)
|
|
- ✅ Stripe Terminal - Tap to Pay on iPhone
|
|
- ✅ Network Access
|
|
- ✅ Keychain Sharing
|
|
- [x] Fichier présent dans `/ios/Runner/Runner.entitlements`
|
|
|
|
### 4. Pods installés
|
|
```
|
|
✅ 26 pods installés au total :
|
|
- Flutter (1.0.0)
|
|
- Stripe (24.16.2)
|
|
- StripeTerminal (4.6.1) ← Essentiel pour Tap to Pay
|
|
- StripeApplePay (24.16.2)
|
|
- StripeCore (24.16.2)
|
|
- StripeFinancialConnections (24.16.2)
|
|
- StripePaymentSheet (24.16.2)
|
|
- StripePayments (24.16.2)
|
|
- StripePaymentsUI (24.16.2)
|
|
- StripeUICore (24.16.2)
|
|
- mek_stripe_terminal (1.0.0)
|
|
- nfc_manager (0.0.1)
|
|
- geolocator_apple (1.2.0)
|
|
- battery_plus (1.0.0)
|
|
- connectivity_plus (0.0.1)
|
|
- device_info_plus (0.0.1)
|
|
- flutter_local_notifications (0.0.1)
|
|
- image_picker_ios (0.0.1)
|
|
- network_info_plus (0.0.1)
|
|
- package_info_plus (0.4.5)
|
|
- path_provider_foundation (0.0.1)
|
|
- permission_handler_apple (9.3.0)
|
|
- sensors_plus (0.0.1)
|
|
- stripe_ios (0.0.1)
|
|
- url_launcher_ios (0.0.1)
|
|
- ReachabilitySwift (5.2.4)
|
|
```
|
|
|
|
### 5. Analyse du code et compilation
|
|
- [x] `flutter analyze` exécuté : **0 erreurs**, 32 warnings (info seulement, pas d'erreurs bloquantes)
|
|
- Avertissements de style principalement
|
|
- Aucune erreur critique
|
|
|
|
#### Statut de compilation (13/10/2025 23:15)
|
|
- ✅ **Web** : Compilation réussie après downgrade syncfusion_flutter_charts 27.2.5
|
|
- ⏳ **Android** : En attente validation après patch nfc_manager 3.3.0
|
|
- Toutes erreurs corrigées (battery_plus, connectivity_plus, SDK 35, nfc_manager)
|
|
- Script `fix-nfc-manager.sh` créé et prêt
|
|
- Test final `./android.sh` requis
|
|
- ⏳ **iOS** : Non testé sur Debian
|
|
- Configuration Mac mini requise
|
|
- Pods installés : 25 pods (dont StripeTerminal 4.6.1)
|
|
|
|
---
|
|
|
|
## 🔄 Étapes en cours
|
|
|
|
### 6. Validation compilation Android
|
|
- [ ] **EN COURS** : Test final Android build après patch nfc_manager
|
|
- [ ] Exécution : `./android.sh`
|
|
- [ ] Vérification : Build APK réussi sans erreurs
|
|
|
|
### 7. Transfert projet vers Mac mini
|
|
- [ ] **EN ATTENTE** : Copie du projet corrigé via Samba/rsync
|
|
- [ ] Vérification : `flutter pub get` sur Mac
|
|
- [ ] Exécution : `./fix-nfc-manager.sh` (patch nfc_manager)
|
|
- [ ] Test : `cd ios && pod install`
|
|
|
|
---
|
|
|
|
## 📝 TODO - Étapes restantes
|
|
|
|
### 8. Compilation de test iOS
|
|
- [ ] Sur Mac mini : Compiler en mode release : `flutter build ios --release --no-codesign`
|
|
- [ ] Vérifier l'absence d'erreurs de compilation
|
|
- [ ] Corriger les éventuels problèmes
|
|
|
|
### 9. Configuration Xcode du projet
|
|
|
|
#### 9.1 Ouvrir le projet dans Xcode
|
|
```bash
|
|
open ios/Runner.xcworkspace
|
|
```
|
|
|
|
#### 9.2 Lier le fichier Runner.entitlements au projet
|
|
**⚠️ IMPORTANT** : Le fichier `Runner.entitlements` existe mais n'est **pas encore référencé** dans le projet Xcode.
|
|
|
|
**Action requise :**
|
|
1. Dans Xcode, sélectionner le target `Runner`
|
|
2. Onglet `Signing & Capabilities`
|
|
3. Vérifier si `Runner.entitlements` est bien lié
|
|
4. Si non lié :
|
|
- Aller dans `Build Settings`
|
|
- Rechercher `CODE_SIGN_ENTITLEMENTS`
|
|
- Ajouter : `Runner/Runner.entitlements`
|
|
|
|
#### 9.3 Configurer les certificats de signature
|
|
- [ ] Sélectionner le Team : `6WT84NWCTC`
|
|
- [ ] Choisir le profil de provisioning approprié
|
|
- [ ] Mode : **Automatic Signing** ou **Manual Signing** selon préférence
|
|
- [ ] Vérifier que le certificat est valide pour distribution App Store
|
|
|
|
#### 9.4 Vérifier les Capabilities
|
|
Dans Xcode > Target Runner > Signing & Capabilities, vérifier :
|
|
- [ ] **Near Field Communication Tag Reading** ✅
|
|
- [ ] **Tap to Pay on iPhone** ⚠️ (nécessite approbation Apple spéciale)
|
|
- [ ] Keychain Sharing (si nécessaire)
|
|
|
|
**⚠️ ATTENTION TAP TO PAY** :
|
|
La capability "Tap to Pay on iPhone" nécessite une demande spéciale à Apple via :
|
|
- App Store Connect > votre app > Features
|
|
- Ou contact direct avec Apple Developer Support
|
|
- Documentation : https://developer.apple.com/tap-to-pay/
|
|
|
|
#### 9.5 Vérifier la version et le build number
|
|
- [ ] Version : `3.3.6`
|
|
- [ ] Build : `336`
|
|
- [ ] Incrémenter si nécessaire pour mise à jour
|
|
|
|
### 10. Créer l'archive pour l'App Store
|
|
|
|
#### 10.1 Build de l'archive
|
|
1. Dans Xcode, menu `Product > Archive`
|
|
2. Attendre la fin de la compilation (~5-10 minutes)
|
|
3. Vérifier qu'il n'y a pas d'erreurs
|
|
|
|
#### 10.2 Valider l'archive
|
|
1. Organizer s'ouvre automatiquement après l'archive
|
|
2. Sélectionner l'archive créée
|
|
3. Cliquer sur `Validate App`
|
|
4. Choisir le bon certificat et profil de provisioning
|
|
5. Attendre la validation (~2-5 minutes)
|
|
6. Corriger les éventuels problèmes détectés
|
|
|
|
#### 10.3 Uploader vers App Store Connect
|
|
1. Dans Organizer, cliquer sur `Distribute App`
|
|
2. Sélectionner `App Store Connect`
|
|
3. Choisir `Upload`
|
|
4. Sélectionner les options :
|
|
- ✅ Upload your app's symbols (pour crashlytics)
|
|
- ✅ Manage Version and Build Number (automatique)
|
|
5. Cliquer sur `Upload`
|
|
6. Attendre la fin de l'upload (~5-15 minutes selon connexion)
|
|
|
|
### 11. Configuration App Store Connect
|
|
|
|
#### 11.1 Accéder à App Store Connect
|
|
- [ ] Se connecter sur https://appstoreconnect.apple.com
|
|
- [ ] Sélectionner l'application GeoSector existante
|
|
- [ ] Créer une nouvelle version `3.3.6`
|
|
|
|
#### 11.2 Métadonnées de l'application
|
|
- [ ] **Nom** : GeoSector
|
|
- [ ] **Sous-titre** : Gestion de calendriers pompiers
|
|
- [ ] **Description** : Rédiger la description complète (highlights v3.3.6)
|
|
- [ ] **Mots-clés** : pompiers, calendrier, secteur, distribution, GPS
|
|
- [ ] **URL support** : Vérifier/mettre à jour
|
|
- [ ] **URL marketing** : Vérifier/mettre à jour
|
|
|
|
#### 11.3 Captures d'écran
|
|
Préparer les captures pour :
|
|
- [ ] iPhone 6.7" (iPhone 14 Pro Max, 15 Pro Max) - OBLIGATOIRE
|
|
- [ ] iPhone 6.5" (iPhone 11 Pro Max, XS Max) - OBLIGATOIRE
|
|
- [ ] iPad Pro 12.9" (3ème génération) - Si support iPad
|
|
- [ ] iPad Pro 12.9" (2ème génération) - Si support iPad
|
|
|
|
**Résolutions requises :**
|
|
- iPhone 6.7" : 1290 x 2796 pixels
|
|
- iPhone 6.5" : 1242 x 2688 pixels
|
|
- iPad Pro 12.9" : 2048 x 2732 pixels
|
|
|
|
#### 11.4 Informations de version
|
|
- [ ] **Nouveautés de cette version** : Rédiger le changelog v3.3.6
|
|
- Architecture moderne sans Provider
|
|
- Interface responsive optimisée
|
|
- Intégration Stripe Connect V1
|
|
- Préparation Tap to Pay V2
|
|
- Performance améliorée
|
|
- Conformité NIST SP 800-63B
|
|
|
|
#### 11.5 Informations générales
|
|
- [ ] **Catégorie principale** : Productivité
|
|
- [ ] **Catégorie secondaire** : Utilitaires
|
|
- [ ] **Classification par âge** : 4+ (probablement)
|
|
- [ ] **Copyright** : Vérifier/mettre à jour
|
|
|
|
#### 11.6 Confidentialité et permissions
|
|
Déclarer l'utilisation des permissions :
|
|
- [ ] **Localisation** : Enregistrement GPS des passages
|
|
- [ ] **NFC** : Lecture tags secteurs (si utilisé)
|
|
- [ ] **Bluetooth** : Connexion terminaux paiement Stripe
|
|
- [ ] **Caméra** : Scan cartes bancaires (Stripe)
|
|
- [ ] **Photos** : Upload justificatifs passages
|
|
- [ ] **Réseau** : Synchronisation données
|
|
|
|
#### 11.7 Informations de contact
|
|
- [ ] **Nom** : Votre nom ou organisation
|
|
- [ ] **Email** : Email de contact
|
|
- [ ] **Téléphone** : Numéro de contact
|
|
- [ ] **URL politique de confidentialité** : OBLIGATOIRE
|
|
|
|
### 12. Soumission pour révision
|
|
|
|
#### 12.1 Sélectionner le build
|
|
- [ ] Dans App Store Connect, section `Build`
|
|
- [ ] Sélectionner le build `3.3.6 (336)` uploadé précédemment
|
|
- [ ] Attendre que le build soit traité par Apple (~30-60 minutes)
|
|
|
|
#### 12.2 Répondre aux questionnaires
|
|
- [ ] **Utilise-t-elle le chiffrement ?** : Probablement OUI (HTTPS)
|
|
- Si OUI, déclarer l'utilisation de HTTPS standard (exempt)
|
|
- [ ] **Utilise-t-elle des identifiants publicitaires ?** : Probablement NON
|
|
- [ ] **Contient-elle de la publicité tierce ?** : NON
|
|
|
|
#### 12.3 Stripe Tap to Pay - Déclaration spéciale
|
|
⚠️ **IMPORTANT** : Avant de soumettre, vérifier :
|
|
- [ ] Demande d'accès Tap to Pay on iPhone soumise à Apple
|
|
- [ ] Compte Stripe Connect configuré et approuvé
|
|
- [ ] Tester la fonctionnalité sur un appareil physique compatible
|
|
- [ ] Documenter le flux de paiement pour les reviewers Apple
|
|
|
|
#### 12.4 Notes pour la révision (Review Notes)
|
|
Rédiger des notes claires pour les reviewers Apple :
|
|
```
|
|
Application de gestion de distribution de calendriers pour amicales de pompiers.
|
|
|
|
COMPTES DE TEST :
|
|
- Email : test@geosector.fr
|
|
- Mot de passe : [à fournir]
|
|
- Rôle : Membre (Rôle 1)
|
|
|
|
- Email : admin@geosector.fr
|
|
- Mot de passe : [à fournir]
|
|
- Rôle : Admin Amicale (Rôle 2)
|
|
|
|
FONCTIONNALITÉS PRINCIPALES :
|
|
1. Géolocalisation GPS pour tracking des passages
|
|
2. NFC pour lecture des tags secteurs (optionnel)
|
|
3. Stripe Connect pour paiements des amicales (V1 - web uniquement)
|
|
4. Tap to Pay sur iPhone (V2 - en développement, pas encore actif)
|
|
|
|
NOTE IMPORTANTE :
|
|
La fonctionnalité "Tap to Pay on iPhone" est présente dans les entitlements
|
|
mais pas encore activée dans cette version. Elle sera activée dans une mise
|
|
à jour ultérieure après approbation Apple.
|
|
|
|
SERVEUR :
|
|
- Environnement de production : https://api.geosector.fr
|
|
- API REST avec authentification JWT
|
|
```
|
|
|
|
#### 12.5 Soumettre pour révision
|
|
- [ ] Vérifier que toutes les informations sont complètes
|
|
- [ ] Cliquer sur `Soumettre pour révision`
|
|
- [ ] Confirmer la soumission
|
|
|
|
---
|
|
|
|
## 📊 Temps estimés
|
|
|
|
| Étape | Durée estimée | Statut |
|
|
|-------|---------------|--------|
|
|
| Validation Android build | 5-10 min | ⏳ En attente |
|
|
| Transfert Mac mini | 10-20 min | ⏳ En attente |
|
|
| Configuration Xcode | 15-30 min | ⏳ En attente |
|
|
| Build + Archive | 10-15 min | ⏳ En attente |
|
|
| Validation | 5-10 min | ⏳ En attente |
|
|
| Upload App Store | 10-20 min | ⏳ En attente |
|
|
| Métadonnées App Store | 30-60 min | ⏳ En attente |
|
|
| Captures d'écran | 30-45 min | ⏳ En attente |
|
|
| Soumission révision | 10 min | ⏳ En attente |
|
|
| **TOTAL** | **2h00 - 3h30** | |
|
|
| Révision Apple | **1-3 jours** | ⏳ En attente |
|
|
|
|
---
|
|
|
|
## ⚠️ Points d'attention
|
|
|
|
### 1. ⚠️ CRITIQUE : Patch nfc_manager obligatoire
|
|
- **⚠️ REQUIS APRÈS CHAQUE `flutter pub get`** : Exécuter `./fix-nfc-manager.sh`
|
|
- **Raison** : nfc_manager 3.3.0 manque la déclaration `namespace` requise par Android Gradle Plugin 8+
|
|
- **Impact** : Build Android échoue sans ce patch
|
|
- **Fonctionnalité** : **nfc_manager est OBLIGATOIRE** pour Stripe Tap to Pay on iPhone (ne pas désactiver)
|
|
- **Automatisation** : Script `fix-nfc-manager.sh` créé dans le dossier racine
|
|
- **Vérification** : Le script détecte si le patch est déjà appliqué
|
|
|
|
### 2. Tap to Pay on iPhone
|
|
- **Statut** : Entitlements présents, mais nécessite approbation Apple
|
|
- **Action** : Demander l'accès via App Store Connect ou Developer Support
|
|
- **Alternative** : Désactiver temporairement la capability si bloquante
|
|
|
|
### 3. Version deployment target
|
|
- **Actuel** : iOS 15.4+
|
|
- **Recommandé** : iOS 16.4+ (pour Tap to Pay)
|
|
- **Action** : Vérifier la compatibilité avec la base utilisateurs
|
|
|
|
### 4. Certificats de signature
|
|
- **Important** : Utiliser un certificat de distribution App Store
|
|
- **Renouvellement** : Vérifier la date d'expiration
|
|
|
|
### 5. Politique de confidentialité
|
|
- **Obligatoire** : URL valide et accessible
|
|
- **Contenu** : Doit couvrir toutes les permissions demandées
|
|
|
|
---
|
|
|
|
## 🔗 Liens utiles
|
|
|
|
- **Apple Developer** : https://developer.apple.com
|
|
- **App Store Connect** : https://appstoreconnect.apple.com
|
|
- **Stripe Tap to Pay** : https://stripe.com/docs/terminal/payments/setup-reader/tap-to-pay
|
|
- **Apple Tap to Pay** : https://developer.apple.com/tap-to-pay/
|
|
- **Human Interface Guidelines** : https://developer.apple.com/design/human-interface-guidelines/
|
|
|
|
---
|
|
|
|
## 📝 Notes de session
|
|
|
|
### Session du 05/10/2025 - Partie 1 (Configuration initiale)
|
|
|
|
#### ✅ Étapes complétées
|
|
- Début : Configuration initiale du projet
|
|
- Flutter upgrade : 3.32.4 → 3.35.5
|
|
- Dart upgrade : 3.8.1 → 3.9.2
|
|
- Pods installés : 26 pods (incluant Stripe Terminal 4.6.1)
|
|
- CFBundleName corrigé : `GeoSector`
|
|
- Installation iOS 18.5 : ✅ **TERMINÉE**
|
|
- Analyse du code : 32 warnings (pas d'erreurs bloquantes)
|
|
|
|
#### ❌ Problème rencontré lors de la compilation iOS
|
|
**Erreur** : `'Flutter/Flutter.h' file not found`
|
|
- Localisation : `/Users/pierre/.pub-cache/hosted/pub.dev/sensors_plus-3.1.0/ios/Classes/FPPSensorsPlusPlugin.h:4:8`
|
|
- Cause probable : Incompatibilité de version `sensors_plus` 3.1.0 avec Flutter 3.35.5
|
|
- Tentatives effectuées :
|
|
1. ❌ `flutter clean` + rebuild
|
|
2. ❌ Suppression complète Pods + réinstallation
|
|
3. ❌ `flutter pub get` + `pod install`
|
|
|
|
#### 🔄 Solution en cours
|
|
**Décision** : Mise à jour complète de tous les packages Flutter
|
|
- Commande : `flutter pub upgrade`
|
|
- Objectif : Résoudre les incompatibilités de versions
|
|
- Packages concernés : 49 packages ont des versions plus récentes disponibles
|
|
|
|
#### 📋 Prochaines étapes après upgrade
|
|
1. Exécuter `flutter pub upgrade`
|
|
2. Vérifier les changements de versions (notamment sensors_plus, package_info_plus, network_info_plus)
|
|
3. Réinstaller les pods iOS :
|
|
```bash
|
|
cd ios
|
|
rm -rf Pods Podfile.lock
|
|
pod install
|
|
cd ..
|
|
```
|
|
4. Nettoyer et récupérer les dépendances :
|
|
```bash
|
|
flutter clean
|
|
flutter pub get
|
|
```
|
|
5. Retenter la compilation : `flutter build ios --release --no-codesign`
|
|
6. Si succès → Ouvrir dans Xcode pour configuration finale
|
|
7. Si échec → Analyser les nouvelles erreurs et ajuster
|
|
|
|
---
|
|
|
|
### Session du 11/10/2025 - Résolution problèmes compilation iOS
|
|
|
|
#### 🐛 Problème rencontré : Module Swift 'Flutter' non trouvé
|
|
|
|
**Erreurs principales** :
|
|
- `No such module 'Flutter'` dans url_launcher_ios, sensors_plus
|
|
- `'Flutter/Flutter.h' file not found` dans plusieurs plugins SwiftPM
|
|
- Erreurs de linking avec architecture x86_64
|
|
|
|
**Cause identifiée** : Flutter 3.35.6 (très récent, 3 jours) a des incompatibilités avec les plugins utilisant la nouvelle architecture SwiftPM.
|
|
|
|
#### ✅ Solutions appliquées
|
|
|
|
##### 1. Création du script `fix_flutter_headers.sh`
|
|
Script automatique qui copie tous les headers Flutter (18 fichiers) dans les plugins problématiques :
|
|
- **Plugins SwiftPM** : package_info_plus, network_info_plus, image_picker_ios, url_launcher_ios
|
|
- **Plugins ancienne structure** : permission_handler_apple
|
|
|
|
Localisation : `/Users/pierre/dev/geosector/app/ios/fix_flutter_headers.sh`
|
|
|
|
Utilisation : `./fix_flutter_headers.sh` (à exécuter après chaque `pod install`)
|
|
|
|
##### 2. Modification du fichier `permission_handler_apple`
|
|
Correction des imports avec angle brackets → guillemets :
|
|
```bash
|
|
# Dans ~/.pub-cache/hosted/pub.dev/permission_handler_apple-9.4.7/ios/Classes/
|
|
sed -i '' 's|#import <Flutter/Flutter.h>|#import "Flutter/Flutter.h"|g' PermissionManager.h PermissionHandlerPlugin.h
|
|
```
|
|
|
|
##### 3. Création du module.modulemap Flutter
|
|
Fichier créé : `/Users/pierre/dev/geosector/app/ios/Flutter/module.modulemap`
|
|
```
|
|
module Flutter {
|
|
header "Flutter.h"
|
|
header "FlutterAppDelegate.h"
|
|
[... 18 headers au total ...]
|
|
export *
|
|
}
|
|
```
|
|
|
|
Headers Flutter copiés dans : `/Users/pierre/dev/geosector/app/ios/Flutter/`
|
|
|
|
##### 4. Downgrade Flutter : 3.35.6 → 3.35.5
|
|
**Date** : 11/10/2025 - 10h45
|
|
|
|
**Raison** : Flutter 3.35.6 (publié il y a 3 jours) a des bugs avec SwiftPM
|
|
|
|
**Commande** :
|
|
```bash
|
|
cd ~/dev/flutter
|
|
git checkout 3.35.5
|
|
flutter --version
|
|
```
|
|
|
|
**Résultat** :
|
|
- Flutter 3.35.5 (26 septembre 2025)
|
|
- Dart 3.9.2
|
|
- DevTools 2.48.0
|
|
|
|
##### 5. Nettoyage complet du projet
|
|
```bash
|
|
cd /Users/pierre/dev/geosector/app
|
|
flutter clean
|
|
rm -rf ios/Pods ios/Podfile.lock ios/.symlinks build
|
|
flutter pub get
|
|
cd ios
|
|
pod install
|
|
./fix_flutter_headers.sh
|
|
```
|
|
|
|
##### 6. Configuration Podfile simplifiée
|
|
Suppression de toutes les modifications complexes de chemins (HEADER_SEARCH_PATHS, SWIFT_INCLUDE_PATHS) qui causaient des problèmes de linking.
|
|
|
|
**Podfile actuel** : Configuration minimale avec :
|
|
- iOS Deployment Target : 15.4 (requis pour Stripe Tap to Pay)
|
|
- Bitcode désactivé
|
|
- User Script Sandboxing désactivé
|
|
- Permissions de géolocalisation
|
|
|
|
#### 📋 Workflow de compilation recommandé
|
|
|
|
**Pour simulateur** :
|
|
1. Ouvrir Xcode : `open ios/Runner.xcworkspace`
|
|
2. Sélectionner destination : iPhone 16 (simulateur)
|
|
3. Product > Clean Build Folder (`Cmd+Shift+K`)
|
|
4. Product > Build (`Cmd+B`)
|
|
|
|
**Pour Archive App Store** :
|
|
1. Destination : Any iOS Device (arm64)
|
|
2. Product > Clean Build Folder
|
|
3. Product > Archive
|
|
|
|
#### ⚠️ Points d'attention
|
|
|
|
**Script fix_flutter_headers.sh** :
|
|
- ✅ Doit être exécuté après CHAQUE `pod install`
|
|
- ✅ Copie les headers dans `.pub-cache` (modifications temporaires)
|
|
- ⚠️ Si Flutter est mis à jour, réexécuter le script
|
|
|
|
**Versions critiques** :
|
|
- Flutter : **3.35.5** (ne pas upgrader vers 3.35.6 pour l'instant)
|
|
- Dart : **3.9.2**
|
|
- Xcode : **16.4**
|
|
- iOS Deployment Target : **15.4+**
|
|
|
|
#### 🔧 Commandes utiles
|
|
|
|
**Vérifier version Flutter** :
|
|
```bash
|
|
flutter --version
|
|
```
|
|
|
|
**Réexécuter le fix des headers** :
|
|
```bash
|
|
cd /Users/pierre/dev/geosector/app/ios
|
|
./fix_flutter_headers.sh
|
|
```
|
|
|
|
**Nettoyer et reconstruire** :
|
|
```bash
|
|
flutter clean
|
|
cd ios && pod install && ./fix_flutter_headers.sh
|
|
```
|
|
|
|
**Retourner à Flutter 3.35.5 si nécessaire** :
|
|
```bash
|
|
cd ~/dev/flutter
|
|
git checkout 3.35.5
|
|
flutter doctor
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 DOWNGRADE FLUTTER 3.24.5 LTS (11/10/2025 - 13:15)
|
|
|
|
### Problème identifié
|
|
Flutter 3.35.x (3.35.5 et 3.35.6) présente des incompatibilités avec l'architecture SwiftPM des plugins iOS :
|
|
- Erreurs `'Flutter/Flutter.h' file not found`
|
|
- Erreurs `No such module 'Flutter'` en Swift
|
|
- Problèmes de compilation persistants malgré workarounds
|
|
|
|
### Solution appliquée
|
|
**Downgrade vers Flutter 3.24.5 LTS** (Long Term Support)
|
|
|
|
### Packages modifiés pour compatibilité
|
|
|
|
| Package | Version initiale | Version compatible | Raison |
|
|
|---------|-----------------|-------------------|--------|
|
|
| `flutter` | 3.35.5 | **3.24.5 LTS** | Version stable sans problèmes SwiftPM |
|
|
| `dart` | 3.9.2 | **3.5.4** | Inclus avec Flutter 3.24.5 |
|
|
| `flutter_stripe` | 12.0.2 | **11.5.0** | Nécessite Dart 3.8+, downgrade requis |
|
|
| `flutter_lints` | 6.0.0 | **5.0.0** | Dev only, compatible Dart 3.5.4 |
|
|
| `nfc_manager` | 4.1.1 | **3.5.0** | Compatible Dart 3.5.4 |
|
|
| `device_info_plus` | 12.1.0 | **11.3.0** | Compatible avec meta 1.15.0 |
|
|
| `flutter_map` | 8.2.2 | **7.0.2** | Compatible Dart 3.5.4 |
|
|
| `flutter_map_cache` | 2.0.0 | **1.5.1** | Compatible Dart 3.5.4 |
|
|
| `syncfusion_flutter_charts` | 31.1.22 | **29.1.38** | Compatible Dart 3.5.4 |
|
|
| `go_router` | 16.2.4 | **15.1.2** | Compatible Dart 3.5.4 |
|
|
| `intl` | 0.20.2 | **0.19.0** | Piné par Flutter SDK 3.24.5 |
|
|
|
|
### Impact fonctionnel
|
|
|
|
✅ **Fonctionnalités conservées** :
|
|
- Tap to Pay on iPhone (mek_stripe_terminal 4.6.0 inchangé)
|
|
- PaymentSheets, Apple Pay, Google Pay
|
|
- Stripe Connect V1
|
|
- SCA/PSD2
|
|
- Toutes les fonctionnalités métier
|
|
|
|
⚠️ **Fonctionnalités perdues** :
|
|
- Options avancées PaymentSheet ajoutées en flutter_stripe 12.x
|
|
- Sofort payment (déprécié par Stripe)
|
|
- Fonctionnalités NFC avancées de nfc_manager 4.x
|
|
|
|
### Commandes exécutées
|
|
|
|
```bash
|
|
# Downgrade Flutter
|
|
cd ~/dev/flutter
|
|
git checkout 3.24.5
|
|
flutter --version
|
|
|
|
# Nettoyer complètement
|
|
flutter clean
|
|
cd ios
|
|
rm -rf Pods Podfile.lock .symlinks
|
|
|
|
# Réinstaller
|
|
flutter pub get
|
|
pod install
|
|
```
|
|
|
|
### Résultat
|
|
✅ 74 packages downgraded
|
|
✅ 25 pods iOS installés avec succès
|
|
✅ Aucune erreur de dépendances
|
|
✅ Configuration stable et testée
|
|
|
|
---
|
|
|
|
## 🔴 DIAGNOSTIC FINAL - PROBLÈME STRUCTUREL iOS (11/10/2025 - 18:00)
|
|
|
|
### 📊 Synthèse du problème persistant
|
|
|
|
Après **5 tentatives** avec différentes versions de Flutter, **les mêmes erreurs persistent** :
|
|
- `'Flutter/Flutter.h' file not found`
|
|
- Affectant : `network_info_plus`, `package_info_plus`, `sensors_plus`
|
|
- **5 erreurs** systématiques dans Xcode
|
|
|
|
### 🎯 Explication technique du conflit Flutter / Packages / Xcode
|
|
|
|
#### **1. L'origine : Transition SwiftPM (Swift Package Manager)**
|
|
|
|
À partir de 2024, Flutter a introduit une **nouvelle architecture iOS** :
|
|
|
|
| Architecture | Période | Gestion dépendances | Structure |
|
|
|--------------|---------|---------------------|-----------|
|
|
| **Ancienne** | < 2024 | CocoaPods uniquement | Headers `.h` dans `/ios/Classes/` |
|
|
| **Nouvelle** | > 2024 | SwiftPM + CocoaPods | Modules Swift dans `/Sources/` |
|
|
|
|
#### **2. Le triangle d'incompatibilité**
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ │
|
|
│ Flutter 3.24.5 LTS Flutter 3.27.2-3.35.x │
|
|
│ (Dart 3.5.4) (Dart 3.6.1-3.9.2) │
|
|
│ ↓ ↓ │
|
|
│ ✅ Stable ancien ⚠️ Transition SwiftPM │
|
|
│ ❌ Headers obsolètes 🐛 Bugs non résolus │
|
|
│ ↓ ↓ │
|
|
│ Incompatible avec Incompatible avec │
|
|
│ plugins récents plugins anciens │
|
|
│ ↓ ↓ │
|
|
│ ❌ ÉCHEC ❌ ÉCHEC │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
#### **3. Ce que nous avons testé (TOUTES LES TENTATIVES ONT ÉCHOUÉ)**
|
|
|
|
| # | Configuration testée | Résultat | Erreurs |
|
|
|---|---------------------|----------|---------|
|
|
| 1 | Flutter **3.35.6** + plugins récents (8.x, 7.x) | ❌ ÉCHEC | `'Flutter/Flutter.h' file not found` |
|
|
| 2 | Flutter **3.35.5** + plugins récents | ❌ ÉCHEC | `No such module 'Flutter'` |
|
|
| 3 | Flutter **3.27.2** + plugins récents | ❌ ÉCHEC | `'Flutter/Flutter.h' file not found` |
|
|
| 4 | Flutter **3.27.2** + plugins anciens (4.x, 3.x) | ❌ ÉCHEC | `'Flutter/Flutter.h' file not found` |
|
|
| 5 | Flutter **3.24.5 LTS** + plugins anciens (4.2.0, 3.1.0) | ❌ ÉCHEC | `'Flutter/Flutter.h' file not found` ⚠️ **ACTUEL** |
|
|
|
|
**Temps investi** : ~6 heures de debug
|
|
**Tentatives de workaround** :
|
|
- ✅ Script `fix_flutter_headers.sh` créé
|
|
- ✅ Modification manuelle des imports Objective-C
|
|
- ✅ Création de `module.modulemap`
|
|
- ✅ Downgrades massifs de packages (geolocator 14→9, package_info 8→4, etc.)
|
|
- ❌ **AUCUNE SOLUTION N'A FONCTIONNÉ**
|
|
|
|
#### **4. La cause racine**
|
|
|
|
**Le problème fondamental** : Les plugins anciens (3.1.0, 4.2.0, 4.1.0) ont une **structure Objective-C** qui importe :
|
|
|
|
```objc
|
|
#import <Flutter/Flutter.h>
|
|
```
|
|
|
|
Cette structure ne fonctionne **DANS AUCUNE VERSION** de Flutter testée :
|
|
- ❌ **Flutter 3.24.5** : Trop ancien, ne gère pas correctement les imports modulaires modernes
|
|
- ❌ **Flutter 3.27.2** : En transition, incompatible avec ancienne ET nouvelle structure
|
|
- ❌ **Flutter 3.35.x** : Bugs SwiftPM documentés, headers mal exposés
|
|
|
|
#### **5. Le dilemme sans solution immédiate**
|
|
|
|
| Si on utilise... | Problème rencontré |
|
|
|------------------|-------------------|
|
|
| **Flutter 3.24.5 LTS** | Headers `Flutter/Flutter.h` non accessibles, même avec vieux plugins |
|
|
| **Flutter 3.27.2-3.35.x** | Architecture SwiftPM instable, bugs dans le SDK |
|
|
| **Plugins récents (7.x, 8.x)** | Nécessitent SwiftPM fonctionnel (Flutter 3.36+) |
|
|
| **Plugins anciens (3.x, 4.x)** | Incompatibles avec toutes les versions Flutter testées |
|
|
|
|
### 💡 Solutions envisageables (non testées)
|
|
|
|
#### **Option A : Retour aux plugins ENCORE PLUS anciens (pré-2023)**
|
|
- Tenter des versions **2.x** des plugins (avant refonte headers)
|
|
- **Risque** : Fonctionnalités manquantes, bugs de sécurité
|
|
- **Effort** : 2-3h de tests
|
|
|
|
#### **Option B : Forcer CocoaPods pur (désactiver SwiftPM complètement)**
|
|
```bash
|
|
# Dans ios/.flutter-plugins-dependencies
|
|
"swift_package_manager_enabled": true → false
|
|
```
|
|
- Modifier les Podfiles pour ignorer SwiftPM
|
|
- **Risque** : Peut casser d'autres plugins (Stripe, NFC)
|
|
- **Effort** : 3-4h de configuration
|
|
|
|
#### **Option C : Patcher manuellement les headers de TOUS les plugins**
|
|
- Réécrire les imports dans les 3 plugins problématiques
|
|
- Créer des copies locales des plugins dans le projet
|
|
- **Risque** : Maintenance difficile, fragile aux mises à jour
|
|
- **Effort** : 4-6h de dev + tests
|
|
|
|
#### **Option D : Attendre Flutter 3.28+ LTS (recommandé mais long)**
|
|
- Flutter 3.28 devrait stabiliser SwiftPM
|
|
- **Date estimée de sortie** : Q1-Q2 2026
|
|
- **Avantage** : Solution officielle et stable
|
|
- **Inconvénient** : Délai de 3-6 mois
|
|
|
|
#### **Option E : Migrer vers React Native ou autre framework**
|
|
- Abandon temporaire de Flutter pour iOS
|
|
- **Effort** : 2-3 semaines de réécriture
|
|
- **Avantage** : Écosystème plus mature pour iOS
|
|
- **Inconvénient** : Perte de l'investissement Flutter
|
|
|
|
### 📋 État actuel du projet
|
|
|
|
**Configuration actuelle (stable mais non compilable)** :
|
|
- ✅ Flutter 3.24.5 LTS + Dart 3.5.4
|
|
- ✅ 199 packages installés sans conflit
|
|
- ✅ 25 Pods iOS installés sans erreur
|
|
- ❌ **Compilation iOS impossible** : 5 erreurs persistantes
|
|
|
|
**Packages downgradés appliqués** :
|
|
- `geolocator`: 14.0.2 → 9.0.2
|
|
- `package_info_plus`: 8.3.1 → 4.2.0 ⚠️ **TOUJOURS EN ERREUR**
|
|
- `network_info_plus`: 7.0.0 → 4.1.0 ⚠️ **TOUJOURS EN ERREUR**
|
|
- `sensors_plus`: 7.0.0 → 3.1.0 ⚠️ **TOUJOURS EN ERREUR**
|
|
- `image_picker`: 1.1.2 → 0.8.9
|
|
|
|
### ⚠️ Recommandations
|
|
|
|
#### **Court terme (1-2 jours)**
|
|
1. ✅ **Tester Option B** (désactiver SwiftPM) - Effort moyen, espoir raisonnable
|
|
2. ⏸️ Contacter le support Flutter sur GitHub Issues
|
|
3. ⏸️ Chercher des forks communautaires des plugins problématiques
|
|
|
|
#### **Moyen terme (1-2 semaines)**
|
|
1. ⏸️ Envisager Option C (patches manuels) si Option B échoue
|
|
2. ⏸️ Surveiller les releases Flutter 3.28 beta
|
|
3. ⏸️ Préparer un plan de migration React Native si nécessaire
|
|
|
|
#### **Long terme (3+ mois)**
|
|
1. ⏸️ Attendre Flutter 3.28+ LTS avec SwiftPM stable
|
|
2. ⏸️ Migrer vers les dernières versions des plugins
|
|
3. ⏸️ Refactorer le code pour profiter des nouvelles APIs
|
|
|
|
### 🔗 Ressources et références
|
|
|
|
- **Flutter SwiftPM Issue** : https://github.com/flutter/flutter/issues/137945
|
|
- **Flutter 3.24.5 Release Notes** : https://github.com/flutter/flutter/releases/tag/3.24.5
|
|
- **Package downgrades documentation** : `/Users/pierre/dev/geosector/app/MIGRATION_FLUTTER_3.24.5.md`
|
|
|
|
---
|
|
|
|
**Dernière mise à jour** : 11/10/2025 - 18:00
|
|
**Statut actuel** : ❌ **BLOQUÉ - Compilation iOS impossible avec toutes les versions Flutter testées**
|
|
**Prochaine étape recommandée** : Tester Option B (désactiver SwiftPM complètement) ou attendre retour communauté Flutter
|
|
|
|
---
|
|
|
|
### Session du 15/10/2025 - Intégration du logo iOS (Build 338)
|
|
|
|
#### ✅ Objectif
|
|
Intégrer le nouveau logo GEOSECTOR dans l'application iOS pour distribution TestFlight.
|
|
|
|
#### 🐛 Problème rencontré
|
|
**Symptôme** : Logo affiché en carré noir dans Xcode et sur l'appareil
|
|
**Cause** :
|
|
- Logo source en format RGBA (avec transparence)
|
|
- iOS interprète le fond transparent comme noir
|
|
- flutter_launcher_icons générait des icônes noirs lors du redimensionnement
|
|
|
|
#### ✅ Solution appliquée
|
|
|
|
##### 1. Conversion du logo avec ImageMagick
|
|
```bash
|
|
magick assets/images/logo-geosector-1024.png \
|
|
-background white -alpha remove -alpha off \
|
|
-resize 1024x1024 \
|
|
assets/images/icons/icon-1024.png
|
|
```
|
|
**Résultat** : PNG RGB 1024x1024 avec fond blanc (pas de transparence)
|
|
|
|
##### 2. Génération manuelle des 21 icônes iOS
|
|
Abandon de flutter_launcher_icons au profit d'ImageMagick pour générer manuellement chaque taille :
|
|
- 20x20@1x,2x,3x
|
|
- 29x29@1x,2x,3x
|
|
- 40x40@1x,2x,3x
|
|
- 50x50@1x,2x
|
|
- 57x57@1x,2x
|
|
- 60x60@2x,3x
|
|
- 72x72@1x,2x
|
|
- 76x76@1x,2x
|
|
- 83.5x83.5@2x
|
|
- 1024x1024@1x (App Store)
|
|
|
|
**Commande type** :
|
|
```bash
|
|
magick assets/images/logo-geosector-1024.png \
|
|
-background white -alpha remove -alpha off \
|
|
-resize 60x60 \
|
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
|
|
```
|
|
|
|
##### 3. Nettoyage complet du cache Xcode
|
|
```bash
|
|
rm -rf ~/Library/Developer/Xcode/DerivedData/*
|
|
rm -rf build/ios
|
|
```
|
|
|
|
##### 4. Compilation et création de l'archive
|
|
```bash
|
|
flutter build ios --release --no-codesign
|
|
# Durée : 47.9s
|
|
# Taille : 107.6 MB
|
|
|
|
# Puis dans Xcode :
|
|
# Product > Clean Build Folder
|
|
# Product > Archive
|
|
```
|
|
|
|
#### 📊 Résultats
|
|
|
|
| Métrique | Valeur |
|
|
|----------|--------|
|
|
| **Version** | 3.3.6 |
|
|
| **Build uploadé** | 338 ✅ |
|
|
| **Builds précédents** | 336, 337 (tests logo) |
|
|
| **Plateforme** | TestFlight |
|
|
| **Logo** | ✅ Affiché correctement |
|
|
| **Taille app** | 107.6 MB |
|
|
| **Temps compilation** | 47.9s |
|
|
|
|
#### 📝 Fichiers modifiés
|
|
|
|
```
|
|
assets/images/icons/
|
|
├── icon-1024.png ← Converti RGB fond blanc
|
|
└── icon-1024-old.png ← Backup ancien logo
|
|
|
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/
|
|
├── Icon-App-1024x1024@1x.png ← Régénéré manuellement
|
|
├── Icon-App-20x20@1x.png ← Régénéré manuellement
|
|
├── Icon-App-20x20@2x.png ← Régénéré manuellement
|
|
├── Icon-App-20x20@3x.png ← Régénéré manuellement
|
|
└── ... (18 autres icônes) ← Tous régénérés
|
|
```
|
|
|
|
#### ⚠️ Points d'attention
|
|
|
|
1. **flutter_launcher_icons ne fonctionne pas** avec ce logo
|
|
- Génère des icônes complètement noirs
|
|
- Nécessite génération manuelle avec ImageMagick
|
|
|
|
2. **Format requis pour iOS** :
|
|
- RGB uniquement (pas de canal alpha)
|
|
- Fond blanc obligatoire
|
|
- Résolution exacte pour chaque taille
|
|
|
|
3. **Cache Xcode** :
|
|
- Nettoyer systématiquement `DerivedData/`
|
|
- Clean Build Folder avant Archive
|
|
|
|
4. **Versioning TestFlight** :
|
|
- Même version 3.3.6 autorisée
|
|
- Build number incrémenté : 336 → 337 → 338
|
|
- Pas besoin de changer la version pour TestFlight
|
|
|
|
#### 🚀 Prochaines étapes
|
|
|
|
- [x] Logo intégré avec succès
|
|
- [x] Build 338 uploadé sur App Store Connect
|
|
- [x] Archive validée dans Xcode
|
|
- [ ] Tester l'app sur TestFlight
|
|
- [ ] Inviter des testeurs internes
|
|
- [ ] Valider l'affichage du logo sur différents appareils
|
|
- [ ] Préparer la soumission App Store (si OK)
|
|
|
|
#### 🔧 Script de régénération complète (si besoin)
|
|
|
|
Pour régénérer tous les icônes à l'avenir :
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# regenerate-ios-icons.sh
|
|
|
|
SOURCE="assets/images/logo-geosector-1024.png"
|
|
DEST="ios/Runner/Assets.xcassets/AppIcon.appiconset"
|
|
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 1024x1024 "$DEST/Icon-App-1024x1024@1x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 20x20 "$DEST/Icon-App-20x20@1x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 40x40 "$DEST/Icon-App-20x20@2x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 60x60 "$DEST/Icon-App-20x20@3x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 29x29 "$DEST/Icon-App-29x29@1x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 58x58 "$DEST/Icon-App-29x29@2x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 87x87 "$DEST/Icon-App-29x29@3x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 40x40 "$DEST/Icon-App-40x40@1x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 80x80 "$DEST/Icon-App-40x40@2x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 120x120 "$DEST/Icon-App-40x40@3x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 50x50 "$DEST/Icon-App-50x50@1x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 100x100 "$DEST/Icon-App-50x50@2x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 57x57 "$DEST/Icon-App-57x57@1x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 114x114 "$DEST/Icon-App-57x57@2x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 120x120 "$DEST/Icon-App-60x60@2x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 180x180 "$DEST/Icon-App-60x60@3x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 72x72 "$DEST/Icon-App-72x72@1x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 144x144 "$DEST/Icon-App-72x72@2x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 76x76 "$DEST/Icon-App-76x76@1x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 152x152 "$DEST/Icon-App-76x76@2x.png"
|
|
magick "$SOURCE" -background white -alpha remove -alpha off -resize 167x167 "$DEST/Icon-App-83.5x83.5@2x.png"
|
|
|
|
echo "✅ 21 icônes iOS régénérés avec succès"
|
|
```
|
|
|
|
---
|
|
|
|
**Dernière mise à jour** : 15/10/2025 - 10:00
|
|
**Statut** : ✅ **Build 338 uploadé avec logo correct**
|
|
**Prochaine étape** : Tests TestFlight
|