La construction Flutter iOS échoue après la mise à niveau vers la version Xcode 10.0 sous mac.
Nagendras-MacBook-Pro:uaenumber nagendra$ flutter run
Launching lib/main.Dart on iPhone X in debug mode...
Starting Xcode build...
Xcode build done. 1.4s
Failed to build iOS app
Error output from Xcode build:
↳
** BUILD FAILED **
Xcode's output:
↳
error: Multiple commands produce '/Users/dev/Documents/projects/Personal/uaenumber/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/dev/Documents/projects/Personal/uaenumber/ios/Flutter/Flutter.framework' to '/Users/dev/Documents/projects/Personal/uaenumber/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”
warning: The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objcinference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "Runner" target. (in target 'Runner')
warning: ignoring duplicated output file: '/Users/nagendra/Documents/projects/Personal/uaedialer/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework' (in target 'Runner')
note: Using new build systemnote: Planning buildnote: Constructing build description
Could not build the application for the simulator.
Error launching application on iPhone X.
Version Xcode - 10.0 (10A255)
J'ai essayé de recréer le projet et copié tous les fichiers source dans le nouveau dossier de projet mais cela ne résout pas le problème.
C'est un problème connu. Voici l'explication et quelques solutions: https://github.com/flutter/flutter/issues/20685#issuecomment-42151189
Projets concernés
Ce problème affecte tous les projets Flutter construits à l'aide de Xcode 10 qui dépendent des CocoaPods - cela signifie généralement ceux qui s'appuient sur des plugins. Solutions de contournement
Il existe deux solutions:
- Option 1: utilisez le système de génération hérité. Comme indiqué par @ gi097, ouvrez ios/Runner.xcworkspace et remplacez le système de génération par Legacy Build System.
- Option 2: utilisez le nouveau système de construction Xcode 10. Ouvrir ios/Runner.xcworkspace Sélectionnez le projet Runner dans la barre latérale du navigateur de projet. Dans la vue principale, sélectionnez la cible Runner, puis sélectionnez l'onglet Build Phases. Développez la phase des cadres intégrés et sélectionnez Flutter.framework dans la liste des cadres intégrés. Cliquez sur - pour supprimer Flutter.framework de la liste (assurez-vous de conserver App.framework).
Cause première
Lorsque des plugins sont utilisés, il existe deux actions de build concurrentes qui copient Flutter.framework dans le répertoire Frameworks de l'application de build:
La phase de construction des cadres intégrés pour le projet Runner
La phase de construction des cadres d'intégration de pods [CP] créée par l'installation de pods dans le projet.
L'élément (1) est là pour s'assurer que le framework est copié dans l'application intégrée dans le cas où il n'y a pas de plugins (et donc pas d'intégration de CocoaPods dans le projet Xcode). L'élément (2) est là parce que le podspec de Flutter déclare Flutter.framework comme un vended_framework, et CocoaPods ajoute automatiquement une étape de copie pour chacun de ces vended_framework dans la fermeture transitive des dépendances CocoaPods.
Cette solution a fonctionné pour moi.
install! 'cocoapods', :disable_input_output_paths => true
pod install
, qui nettoiera automatiquement la phase de constructionflutter build ios
Voir: https://github.com/flutter/flutter/issues/20685#issuecomment-50973187https://github.com/flutter/flutter/issues/20685#issuecomment- 51016286
Avertissement: ne revenez pas au système de génération hérité obsolète Xcode pour résoudre ce problème, comme suggéré dans les autres réponses.