📋 Rapport Diagnostic Complet - Workflow Apple Build (Run #18686872188)
Date du rapport: 2 novembre 2025
Run ID: 18686872188
Statut: ❌ FAILED
Durée: ~8 minutes (14:15:43 - 14:23:26 UTC)
Date du run: 21 octobre 2025
🔴 Problème Principal
Erreur de Compilation Swift - FirebaseSharedSwift
Localisation: /Users/runner/work/yinshi/yinshi/ios/Pods/FirebaseSharedSwift/FirebaseSharedSwift/Sources/third_party/FirebaseDataEncoder/FirebaseDataEncoder.swift:288:63
Erreurs détectées:
1. Swift Compiler Error: Consecutive declarations on a line must be separated by ';'
2. Swift Compiler Error: Expected declaration
3. Swift Compiler Error: Cannot find type 'sending' in scope
Cause racine: Incompatibilité de version Swift entre:
- Code compilé: FirebaseSharedSwift contient du code Swift 6 (mot-clé sending)
- Compilateur utilisé: Swift 5.0 (forcé dans le Podfile)
📊 Analyse Détaillée de la Configuration
1. Configuration du Workflow (flutter_apple_build.yml)
✅ Points positifs:
- Runner:
macos-14(approprié et à jour) - Flutter:
3.35.5(version stable récente) - Cache des dépendances: Bien configuré
- Gestion des secrets: Correctement masquée
- Nettoyage des ressources: Effectué en fin de build
⚠️ Points problématiques:
a) Forçage de Swift 5.0 dans le Podfile (ligne 45)
config.build_settings['SWIFT_VERSION'] = '5.0'
b) Mise à jour CocoaPods (ligne 62)
pod repo update
--repo-update
c) Suppression du Podfile.lock (ligne 67)
rm -f Podfile.lock
Podfile.lock pour garantir la reproductibilité
2. Dépendances Firebase (pubspec.yaml)
firebase_auth: ^6.1.0
cloud_firestore: ^6.0.2
firebase_core: ^4.1.0
firebase_crashlytics: ^5.0.2
firebase_ui_auth: ^3.0.0
firebase_ui_oauth_google: ^2.0.0
firebase_ui_oauth_apple: ^2.0.0
firebase_ui_localizations: ^2.0.0
Analyse:
- ✅ Versions cohérentes (Firebase 6.x)
- ⚠️ Problème: Ces versions dépendent de
FirebaseSharedSwiftqui peut nécessiter Swift 6 - ❌ Conflit: Le Podfile force Swift 5.0, ce qui crée une incompatibilité
3. Configuration iOS (ios/Podfile)
platform :ios, '15.0'
use_frameworks! est configuré
Problème identifié (ligne 43-46):
# Forcer Swift 5.0 pour éviter les erreurs avec Firebase + Xcode 15+
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '5.0'
end
4. Configuration d'Export (ios/ExportOptions.plist)
<key>method</key>
<string>app-store</string>
<key>signingStyle</key>
<string>manual</string>
📈 Timeline de l'Exécution
| Étape | Durée | Statut | Notes |
|---|---|---|---|
| Checkout | - | ✅ | Succès |
| Flutter setup | - | ✅ | v3.35.5 |
| Dependencies | ~30s | ✅ | 11 packages outdated |
| CocoaPods update | ~30s | ✅ | Succès |
| Pod install | ~29.5s | ✅ | Succès |
| Xcode build | ~42.6s | ❌ | ERREUR SWIFT |
| Total | ~8 min | ❌ | Échoué |
🔍 Analyse des Dépendances Outdated
Le workflow rapporte:
11 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.
Packages identifiés comme outdated:
- google_sign_in: 6.3.0 (7.2.0 available)
- google_sign_in_android: 6.2.1 (7.2.2 available)
- google_sign_in_ios: 5.9.0 (6.2.2 available)
- google_sign_in_web: 0.12.4+4 (1.1.0 available)
- material_color_utilities: 0.11.1 (0.13.0 available)
- meta: 1.16.0 (1.17.0 available)
- test_api: 0.7.6 (0.7.7 available)
- + 4 autres
Impact: Les versions plus récentes pourraient résoudre les incompatibilités Swift
🛠️ Solutions Recommandées (Priorité)
🔴 CRITIQUE - À faire immédiatement
Solution 1: Supprimer le forçage de Swift 5.0 (RECOMMANDÉ)
Fichier: ios/Podfile
Changement:
# ❌ AVANT (ligne 43-46)
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '5.0'
end
# ✅ APRÈS - Supprimer complètement cette section
# Laisser Xcode gérer automatiquement la version Swift
Raison: - FirebaseSharedSwift v1.x+ nécessite Swift 6 - Xcode 15+ gère correctement Swift 6 - Pas besoin de forcer une version antérieure
🟠 IMPORTANT - À faire rapidement
Solution 2: Commiter le Podfile.lock
Problème actuel: Le workflow supprime Podfile.lock à chaque build (ligne 67)
Changement dans le workflow:
# ❌ AVANT
- name: Clean CocoaPods cache and reinstall
working-directory: ios
run: |
rm -f Podfile.lock
pod install --repo-update
# ✅ APRÈS
- name: Clean CocoaPods cache and reinstall
working-directory: ios
run: |
pod install --repo-update
Raison: - Garantit la reproductibilité des builds - Évite les versions incompatibles - Meilleure pratique standard
Action: Commiter ios/Podfile.lock dans Git
Solution 3: Mettre à jour les dépendances Firebase
Fichier: pubspec.yaml
Vérifier les versions compatibles:
flutter pub outdated
Potentiellement mettre à jour:
firebase_auth: ^6.2.0 # ou version plus récente
cloud_firestore: ^6.1.0
firebase_core: ^4.2.0
firebase_crashlytics: ^5.1.0
firebase_ui_auth: ^3.1.0
🟡 RECOMMANDÉ - Optimisations
Solution 4: Mettre à jour google_sign_in
Fichier: pubspec.yaml
Changement:
# ❌ AVANT
google_sign_in: ^6.3.0
google_sign_in_ios: ^5.9.0
# ✅ APRÈS
google_sign_in: ^7.2.0
google_sign_in_ios: ^6.2.2
Raison: Versions plus récentes, meilleures compatibilités
Solution 5: Ajouter une contrainte Swift minimale
Fichier: pubspec.yaml
Ajouter:
environment:
sdk: ^3.8.1
# Ajouter une note pour les développeurs iOS
Fichier: ios/Podfile
Ajouter après platform :ios, '15.0':
# Minimum Swift version for Firebase compatibility
ENV['SWIFT_VERSION'] = '6.0'
📋 Checklist de Correction
- [ ] 1. Supprimer le forçage Swift 5.0 du Podfile
- Fichier:
ios/Podfile(lignes 43-46) -
Action: Supprimer la section
target.build_configurations.each -
[ ] 2. Conserver Podfile.lock dans Git
- Fichier:
ios/Podfile.lock -
Action: Commiter le fichier
-
[ ] 3. Modifier le workflow pour ne pas supprimer Podfile.lock
- Fichier:
.github/workflows/flutter_apple_build.yml(ligne 67) -
Action: Supprimer
rm -f Podfile.lock -
[ ] 4. Tester localement
cd ios pod install cd .. flutter clean flutter pub get flutter build ipa --release -
[ ] 5. Relancer le workflow
- Vérifier que le build réussit
- Vérifier que le déploiement vers TestFlight fonctionne
🧪 Vérification Recommandée
Test local avant de relancer le workflow:
# 1. Nettoyer complètement
flutter clean
rm -rf ios/Pods ios/Podfile.lock
# 2. Réinstaller les dépendances
flutter pub get
cd ios
pod install
cd ..
# 3. Tester la compilation
flutter build ipa --release --export-options-plist=ios/ExportOptions.plist
# 4. Vérifier les versions
flutter pub outdated
📊 Résumé des Problèmes
| Problème | Sévérité | Cause | Solution |
|---|---|---|---|
| Swift 5.0 forcé vs Swift 6 requis | 🔴 CRITIQUE | Podfile obsolète | Supprimer le forçage |
| Podfile.lock supprimé à chaque build | 🟠 IMPORTANT | Workflow | Conserver le fichier |
| Dépendances outdated | 🟡 MOYEN | pubspec.yaml | Mettre à jour |
| Pas de contrainte Swift explicite | 🟡 MOYEN | Configuration | Ajouter env var |
📝 Notes Additionnelles
Versions utilisées dans le run échoué:
- macOS Runner: 14
- Flutter: 3.35.5
- Xcode: Version par défaut sur macOS 14 (probablement 15.x)
- Swift: Forcé à 5.0 (incompatible avec Firebase)
- iOS Platform: 15.0
Recommandation finale:
Appliquer la Solution 1 immédiatement (supprimer le forçage Swift 5.0). C'est la cause directe de l'erreur et la correction la plus simple et efficace.
Généré le: 2 novembre 2025
Analysé par: Diagnostic Automatisé