Flutter: Plusieurs commandes produisent '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework

Créé le 16 août 2018  ·  50Commentaires  ·  Source: flutter/flutter

Lorsque je veux déboguer l'application dans l'environnement MacOs, cela génère une erreur :

Plusieurs commandes produisent '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework
1) La cible 'Runner' a une commande de copie de '/ios/Flutter/Flutter.framework' vers '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) Cette commande dépend de la commande dans Target 'Runner' : phase de script « [CP] Embed Pods Frameworks »
avertissement : ignorer le fichier de sortie dupliqué : '//build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework' (dans la cible 'Runner')
note : Utilisation du nouveau système de buildnote : Planification buildnote : Construire la description de la construction

Mac 10.14 bêta
Xcode 10 bêta

Comment le réparer? Merci beaucoup

annoyance crowd platform-ios crash tool

Commentaire le plus utile

J'ai pu le réparer en ouvrant le projet d'espace Runner travail File , Workspace Settings et changez le système de construction en Legacy Build System .

schermafbeelding 2018-08-16 om 14 10 10

Tous les 50 commentaires

Pouvez-vous s'il vous plaît fournir des étapes exactes pour reproduire?
Comment avez-vous créé le projet ?
Quels fichiers avez-vous modifiés, quels changements avez-vous apportés ?

Veuillez ajouter la sortie de flutter doctor -v .

J'ai pu le réparer en ouvrant le projet d'espace Runner travail File , Workspace Settings et changez le système de construction en Legacy Build System .

schermafbeelding 2018-08-16 om 14 10 10

Merci beaucoup! Ça marche.

Projets concernés

Ce problème affecte tous les projets Flutter construits à l'aide de Xcode 10 qui ont une dépendance sur CocoaPods - généralement, cela signifie ceux qui reposent sur des plugins.

Solutions de contournement

Il existe deux solutions de contournement :

  • Option 1 : utiliser le système de génération hérité . Comme indiqué par @ gi097 , ouvrez ios/Runner.xcworkspace et changez le système de construction en Legacy Build System .
  • Option 2 : utilisez le nouveau système de construction Xcode 10.

    1. Ouvert ios/Runner.xcworkspace

    2. Sélectionnez le projet Runner dans la barre latérale du navigateur de projet.

    3. Dans la vue principale, sélectionnez la cible Runner , puis sélectionnez l'onglet Build Phases .

    4. Développez la phase Embed Frameworks et sélectionnez Flutter.framework dans la liste des frameworks intégrés.

    5. 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 génération concurrentes qui copient Flutter.framework dans le répertoire Frameworks de l'application de génération :

  1. La phase de construction de Embed Frameworks pour le projet Runner
  2. La phase de construction [CP] Embed Pods Frameworks que pod install crée dans le projet.

L'élément (1) est là pour s'assurer que le framework est copié dans l'application construite dans le cas où il n'y a pas de plugins (et donc pas d'intégration 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.

Correction immédiate

Le correctif immédiat consiste pour nous à trouver un moyen de réactiver automatiquement le correctif de build hérité jusqu'à ce qu'une meilleure solution à plus long terme soit en place. Les versions bêta précédentes prenaient en charge -useNewBuildSystem=NO ou -useModernBuildSystem=NO mais il semble que cela ait été supprimé dans la version GM. Il semble qu'actuellement, la façon de procéder consiste à ajouter une paire clé-valeur ( <key>BuildSystemType</key><string>Original</string> ) à ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings .

Correction à plus long terme

L'option la plus simple serait d'éliminer Flutter.framework de l'étape Intégrer les frameworks ci-dessus et de toujours compter sur l'installation du pod, même dans le cas où il n'y a pas de dépendances de plugin. Nous aurions besoin de mettre à jour l'outil Flutter pour modifier automatiquement les projets existants afin de supprimer Flutter.framework de l'étape Intégrer les frameworks.

pro : code plus simple. inconvénient : fait de Cocopods une étape d'installation requise pour le développement de Flutter, la première exécution implique un téléchargement énorme et très lent de leur référentiel.

Une option légèrement plus agréable serait pour nous de détecter automatiquement si le projet utilise des plugins ou non, et de modifier le projet Xcode pour vérifier et supprimer Flutter.framework de l'étape Embed Frameworks automatiquement si des plugins sont en cours d'utilisation ou de l'ajouter sinon.

pro : meilleure expérience utilisateur. inconvénient : code plus complexe.

Dans tous les cas, nous avons besoin d'un mécanisme pour éditer automatiquement le fichier project.pbxproj et supprimer le framework de l'étape de construction des frameworks d'intégration. La prise en charge de son rajout n'est pas beaucoup de travail incrémentiel et se traduit par une meilleure expérience.

/cc @tvolkert @gspencergoog @dnfield

Désolé, je n'avais pas l'intention d'inonder votre outil de suivi des problèmes.

J'ai suivi cette résolution #20685

mais maintenant il en résulte l'erreur suivante

captura de tela 2018-09-18 as 10 06 38 am

Quelqu'un a-t-il une idée de comment résoudre cela?
@gi097 @cbracken @zoechi @sidealice @hungrymonkey

@tiagosito Un patch débarquera momentanément sur la branche master . Pour le moment, consultez les solutions de contournement répertoriées dans mon commentaire ci-dessus.

@tiagosito Un patch atterrira momentanément sur le maître. Pour le moment, consultez les solutions de contournement répertoriées dans mon commentaire ci-dessus.

@cbracken J'ai suivi l'option 2 que vous avez signalée #20685

Mais j'ai eu ce petit problème #21989

A été résolu de cette manière #21989

Je n'utilise pas le canal maître, lorsque le correctif que vous avez mentionné sera publié, serai-je touché par la même solution sur le canal bêta ?

@cbracken et @gi097 pour l'instant merci beaucoup

a également eu ce problème plus tôt dans la journée après être passé à iOS 12, qui nécessitait alors xcode 10, qui a ensuite cassé le flottement. l'option 2 ci-dessus a fonctionné, mais vous devez effacer le cache de création de votre package :

~/flutter/.pub-cache/hosted/
flutter clean
flutter packages get

ou bien vous allez vous gratter la tête.

Le « correctif immédiat » dans mon commentaire ci-dessus a atterri sur le maître. Travailler sur le canal dev possible.

Pour info, cela a maintenant atterri sur la chaîne dev .

Super!
Au fait, comment appliquons-nous ce correctif dans des projets existants ? Simplement en effectuant une mise à niveau flottante ?

@tadejkan Vous voudrez exécuter flutter channel dev pour passer au canal de développement puis flutter upgrade .

@cbracken un doute subsiste est que ... nous utiliserons le mode de compilation hérité ou le correctif corrigera déjà le nouveau mode de compilation.

En d'autres termes, le correctif applique-t-il la solution de l'étape 1 ou de l'étape 2 que vous avez présentée ici ou est-ce déjà une solution définitive et quand ce correctif sera-t-il appliqué au canal bêta ?

@tiagosito le correctif que j'ai débarqué implémente le "correctif immédiat" ci-dessus (revenir au système de construction pré-Xcode 10) qui nous fait

La bonne solution pour cela consiste à détecter quand CocoaPods/plugins sont utilisés et à compter sur CocoaPods pour intégrer Flutter.framework dans l'application de sortie dans ces cas, et pour tous les autres cas, invoquer nous-mêmes l'étape d'intégration. Je vais travailler dessus par la suite.

Je suis confronté à des problèmes de construction d'ios que je ne peux pas résoudre pendant 4 jours complets maintenant ... devenant très impuissant maintenant alors que j'ai essayé tant de choses et de combinaisons; devenir très confus et triste.
Il s'agit de la dernière erreur après plusieurs erreurs différentes :

duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._localAuthenticationInfo in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._keychainInfo in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasLocalAuthentication in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasKeychain in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._cachedState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._keychainExpireTime in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_CLASS_$_MDMPasscodeCache in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_METACLASS_$_MDMPasscodeCache in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasEnteredBackground in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeState._status in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeState._info in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_CLASS_$_MDMPasscodeState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_METACLASS_$_MDMPasscodeState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) ld: 13 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

ld: 13 duplicate symbols for architecture x86_64
Launching lib/main.dart on iPhone XS Max in debug mode...
Xcode build done.
Failed to build iOS app
Error output from Xcode build:
↳
** BUILD FAILED **
Xcode's output:
↳
warning: The iOS Simulator deployment target is set to 4.3, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'nanopb')
warning: The iOS Simulator deployment target is set to 6.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'GoogleUtilities')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'GTMSessionFetcher')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'Protobuf')
warning: The iOS Simulator deployment target is set to 5.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'leveldb-library')
warning: The iOS Simulator deployment target is set to 5.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'BoringSSL')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-RxLibrary')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-Core')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-C++')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-gRPCCertificates')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-ProtoRPC')
warning: The iOS Simulator deployment target is set to 6.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'cloud_firestore')
duplicate symbol __channel in:
/Users/erikiado/Code/internals/flutter/find_word/build/ios/Debug-iphonesimulator/audioplayers/libaudioplayers.a(AudioplayersPlugin.o)
/Users/erikiado/Code/internals/flutter/find_word/build/ios/Debug-iphonesimulator/firebase_admob/libfirebase_admob.a(FLTMobileAd.o)
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: Using new build systemnote: Planning buildnote: Constructing build description
Could not build the application for the simulator.
Error launching application on iPhone XS Max.
Exited (sigterm)

@erikiado et @LiveRock vos problèmes (symboles en double sur les versions du simulateur x86_64) ne semblent pas liés à celui-ci. Veuillez suivre les progrès de ceux sur #22020.

ETA pour le canal bêta ?

@lukepighetti, cela est maintenant poussé vers le canal beta (il y a quelques instants). flutter upgrade loin !

Correction de mon problème. Merci!

@sidealice est-ce que c'est corrigé pour vous aussi ?

merci, la solution 2 a fonctionné !

Sans informations supplémentaires, nous ne savons malheureusement pas comment résoudre ce problème. Nous allons donc à contrecœur fermer ce bug pour le moment. N'hésitez pas à commenter le bug si vous avez plus d'informations pour nous ; nous allons le rouvrir tout de suite!
Merci pour votre contribution.
cc @Hixie

Merci mec ! Ça marche.

Je reçois toujours ce problème sur le canal stable Flutter v1.0.0
Le correctif est-il censé être dans stable?

[✓] Flutter (Channel stable, v1.0.0, sur Mac OS X 10.14.1 18B75, locale en-GB)
• Flutter version 1.0.0 sur /usr/local/share/flutter
• Révision du cadre 5391447fae (il y a 3 semaines), 2018-11-29 19:41:26 -0800
• Révision du moteur 7375a0f414
• Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)

[✓] Chaîne d'outils iOS - développer pour les appareils iOS (Xcode 10.1)
• Xcode sur /Applications/Xcode.app/Contents/Developer
• Xcode 10.1, Build version 10B61
• ios-déployer 2.0.0
• CocoaPods version 1.5.3

@JannieT s'il vous plaît vérifier dev aussi.
Je ne sais pas si cela devrait être dans stable , mais si cela fonctionne sur dev la réponse est probablement "non".

Merci! Juste pour confirmer, le correctif est dans Stable v1.0.0
J'ai rencontré le problème parce que j'ouvrais le fichier .xcodeproject au lieu du .xcworkspace documenté lorsque j'essayais de créer une archive.

J'ai le même problème en ce moment.

error: Multiple commands produce '/Users/n.gendron/Library/Developer/Xcode/DerivedData/Runner-eilfeqiwvjuvbghjmkepqybkaoja/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/n.gendron/Documents/GitLab/techno_store/ios/Flutter/Flutter.framework' to '/Users/n.gendron/Library/Developer/Xcode/DerivedData/Runner-eilfeqiwvjuvbghjmkepqybkaoja/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”
[✓] Flutter (Channel dev, v1.2.2, on Mac OS X 10.13.6 17G5019, locale fr-CA)
    • Flutter version 1.2.2 at /Library/flutter
    • Framework revision 007a415c2a (5 days ago), 2019-02-21 20:22:47 -0800
    • Engine revision f1f19bba8f
    • Dart version 2.2.0 (build 2.2.0-dev.2.1 c92d5ca288)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/n.gendron/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
    • All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.1, Build version 10B61
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[✓] Android Studio (version 3.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 33.1.1
    • Dart plugin version 182.5215
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)

[✓] VS Code
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 2.12.2

[✓] Connected device (1 available)
    • iPad de TechnoSolutions • 3e430eb4db265d124e9684f487cc542f2442ed1d • ios • iOS 10.3.3

• No issues found!

J'ai essayé le Legacy Build System , mais j'ai ensuite eu un autre problème. J'ai également essayé de supprimer Flutter.framework , mais l'erreur est la même.

#import <barcode_scan/BarcodeScanPlugin.h> # 'barcode_scan/BarcodeScanPlugin.h' file not found

Le plugin concerné est barcode_scan .


Ce qui a résolu le problème pour moi est https://github.com/apptreesoftware/flutter_barcode_reader/issues/44#issuecomment -460415307.

open -a Xcode ios

Réouverture car nous n'avons trouvé que la solution de contournement à ce stade, pas la solution à long terme pour passer au nouveau système de construction.

Sans informations supplémentaires, nous ne savons malheureusement pas comment résoudre ce problème. Nous allons donc à contrecœur fermer ce bug pour le moment. N'hésitez pas à commenter le bug si vous avez plus d'informations pour nous ; nous allons le rouvrir tout de suite!
Merci pour votre contribution.

m'aide à rendre le flutter propre puis à construire via Android Studio

[✓] Flutter (Channel beta, v1.3.8, on Mac OS X 10.14.4 18E226, locale en-AU)
    • Flutter version 1.3.8 at /Users/yantsui/Installs/flutter
    • Framework revision e5b1ed7a7f (6 weeks ago), 2019-03-06 14:23:37 -0800
    • Engine revision f4951df193
    • Dart version 2.2.1 (build 2.2.1-dev.0.0 571ea80e11)

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_HOME to that location.
      You may also want to add it to your PATH environment variable.


[✓] iOS toolchain - develop for iOS devices (Xcode 10.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.2, Build version 10E125
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).

[✓] IntelliJ IDEA Ultimate Edition (version 2018.3.5)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 34.0.2
    • Dart plugin version 183.5912.23

[!] VS Code (version 1.33.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (1 available)
    • iPhone Xʀ • 39D838DF-E49E-4F0A-8F40-B73C91700F6E • ios • com.apple.CoreSimulator.SimRuntime.iOS-12-2 (simulator)

! Doctor found issues in 3 categories.
flutter clean
flutter build ios
Xcode 10 -> Product -> Clean Build Folder
Xcode 10 -> Product -> Run

Erreur dans Xcode :

Showing All Messages
:-1: Multiple commands produce '/Users/meow/Documents/meow/crystal/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/meow/Documents/meow/crystal/ios/Flutter/Flutter.framework' to '/Users/meow/Documents/meow/crystal/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”

Fixé:
A couru open -a Xcode ios mais il semble que cela n'a pas fonctionné.
J'ai donc ouvert le projet dans Xcode en utilisant Runner.xcworkspace place et cela a fonctionné.

Ce problème se produit toujours pour moi, même lorsque j'ouvre le projet via l'espace de travail. Seul le changement du système de construction en héritage semble le résoudre.

Nous pouvons également tirer parti de l'option d'installation CocoaPods disable_input_output_paths, qui supprime les fichiers d'entrée et de sortie de la phase de construction du [CP] Emded Pods Framework. Cette option d'installation a été ajoutée car le nouveau système de construction Xcode n'a pas réussi à exécuter le script même lorsque les fichiers d'entrée ont été touchés. Voir https://www.ralfebert.de/ios/blog/cocoapods-clean-input-output-files.

Avantages:

  • Les projets Xcode utiliseront le nouveau système de build sans erreurs de compilation. Xcode a menacé de supprimer la prise en charge des versions héritées, donc Flutter sera prêt lorsque cela se produira.
  • Correction simple.
  • Aucune logique supplémentaire pour décider s'il faut inclure Flutter.framework dans la phase de construction des frameworks intégrés puisqu'il sera toujours inclus.
  • N'exigera pas que CocoaPods devienne une dépendance si le projet est Vanilla Flutter sans packages.

Les inconvénients:

  • Le script Pods-Runner-frameworks.sh s'exécutera sur chaque build, même lorsque Flutter.framework ne change pas. Sur mon MacBook Pro 2018, cela ajoute environ 1 seconde à la construction.
  • Si le nouveau bogue du système de construction Xcode est résolu, CocoaPods peut supprimer cette option d'installation et le problème des copies de framework en double se réaffirmera.
  • La version minimale de CocoaPods devra passer de 1.0.0 à 1.6.0 lorsque l'option disable_input_output_paths a été introduite.

@jmagman Génial ! Cette approche me semble bonne. Si nous arrivons au point où nous voyons des plugins Cocoapods qui sont vraiment coûteux à compiler, nous pouvons traiter cela comme une optimisation. Cela résout le risque immédiat en attendant!

Merci!!!!!

Merci

Si vous voyez toujours cette erreur, vous devrez migrer votre projet Xcode :

  1. Fichier > Paramètres de l'espace de travail... > Système de construction, remplacez la liste déroulante par Nouveau système de construction (par défaut)
  2. Dans votre Podfile, ajoutez la ligne
install! 'cocoapods', :disable_input_output_paths => true

Voir https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile par exemple.

  1. Dans la phase de construction de la cible Runner "[CP] Embed Pods Framework", supprimez tous les fichiers de sortie.

@jmagman merci - mais cela pourrait-il être lié à #18673 ? Parce qu'après la migration (via flutter upgrade , qui a effectué ce changement sur ma machine automatiquement dans le Podfile), je peux construire en utilisant flutter build ios mais en essayant d'archiver dans Xcode, j'ai l'erreur de # 18673.

@jmagman merci - mais cela pourrait-il être lié à #18673 ? Parce qu'après la migration (via flutter upgrade , qui a effectué ce changement sur ma machine automatiquement dans le Podfile), je peux construire en utilisant flutter build ios mais en essayant d'archiver dans Xcode, j'ai l'erreur de # 18673.

@jmagman J'ai trouvé la solution, en fait ceci https://github.com/flutter/flutter/issues/16246#issuecomment -476329255 a résolu mon problème. Désolé pour le dérangement.

@jmagman Pour ceux d'entre nous qui connaissent moins XCode, pourriez-vous expliquer l'étape 3 plus en détail ? Où se trouve la phase de construction de la cible Runner "[CP] Embed Pods Framework" pour supprimer tous les fichiers de sortie ?

Trouvé. Cliquez sur « Runner » dans la barre de navigation de gauche, puis sur l'onglet « Build Phases », puis faites défiler jusqu'à « Output Files », sélectionnez-les tous, puis cliquez sur le bouton de soustraction pour les supprimer.

Comment puis-je résoudre ce problème sans Mac ? J'utilise un pipeline cloud pour construire pour iOS mais je dois résoudre ce problème...

Si vous voyez toujours cette erreur, vous devrez migrer votre projet Xcode :

  1. Fichier > Paramètres de l'espace de travail... > Système de construction, remplacez la liste déroulante par Nouveau système de construction (par défaut)
  2. Dans votre Podfile, ajoutez la ligne
install! 'cocoapods', :disable_input_output_paths => true

Voir https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile par exemple.

  1. Dans la phase de construction de la cible Runner "[CP] Embed Pods Framework", supprimez tous les fichiers de sortie.

Ou vous pouvez faire #1 et #2, puis exécuter pod install partir du répertoire ios, et CocoaPods devrait supprimer automatiquement ce fichier de sortie lors de la phase de construction.

@gincos Si vous n'avez pas de Mac, vous pouvez consulter PR https://github.com/flutter/flutter/pull/33684/ pour un exemple de la façon de peaufiner les fichiers Xcode manuellement. Si vous avez un Mac, veuillez plutôt suivre les étapes ci-dessus !

  1. Supprimez le fichier ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings. C'est ce qui se passe sous les couvertures avec Fichier > Paramètres de l'espace de travail... > Système de construction > Nouveau système de construction (par défaut).
    https://github.com/flutter/flutter/pull/33684/files#diff -e7ad834b29956b3cbd9225dc81f2c06a

    1. Dans votre Podfile, ajoutez la ligne

      install! 'cocoapods', :disable_input_output_paths => true

      https://github.com/flutter/flutter/pull/33684/files#diff -4e7de62cf4dff9802f06b7f3cb120939

Espérons que votre pipeline cloud devrait exécuter pod install et prendre en charge le numéro 3 ci-dessus pour vous.

Si vous voyez toujours l'erreur, vous pouvez modifier ios/Runner.xcodeproj/project.pbxproj pour supprimer le fichier de sortie manuellement. S'il vous plaît soyez prudent en faisant cela! Le fichier de projet Xcode ne supporte pas la corruption.
https://github.com/flutter/flutter/pull/33684/files#diff -e9e57f7f2e911a135acd8f08e79b20e1

@jmagman Merci ! Cela a fonctionné comme un charme! Oui, le fournisseur de cloud exécute une installation de pod et produit maintenant un artefact correct pour Android et iOS dans la dernière version bêta.

Projets concernés

Ce problème affecte tous les projets Flutter construits à l'aide de Xcode 10 qui ont une dépendance sur CocoaPods - généralement, cela signifie ceux qui reposent sur des plugins.

Solutions de contournement

Il existe deux solutions de contournement :

  • Option 1 : utiliser le système de génération hérité . Comme indiqué par @ gi097 , ouvrez ios/Runner.xcworkspace et changez le système de construction en Legacy Build System .
  • Option 2 : utilisez le nouveau système de construction Xcode 10.

    1. Ouvert ios/Runner.xcworkspace
    2. Sélectionnez le projet Runner dans la barre latérale du navigateur de projet.
    3. Dans la vue principale, sélectionnez la cible Runner , puis sélectionnez l'onglet Build Phases .
    4. Développez la phase Embed Frameworks et sélectionnez Flutter.framework dans la liste des frameworks intégrés.
    5. Cliquez sur - pour supprimer Flutter.framework de la liste (assurez-vous de _keep_ App.framework ).

Cause première

Lorsque des plugins sont utilisés, il existe deux actions de génération concurrentes qui copient Flutter.framework dans le répertoire Frameworks de l'application de génération :

  1. La phase de construction de Embed Frameworks pour le projet Runner
  2. La phase de construction [CP] Embed Pods Frameworks que pod install crée dans le projet.

L'élément (1) est là pour s'assurer que le framework est copié dans l'application construite dans le cas où il n'y a pas de plugins (et donc pas d'intégration 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.

Correction immédiate

Le correctif immédiat consiste pour nous à trouver un moyen de réactiver automatiquement le correctif de build hérité jusqu'à ce qu'une meilleure solution à plus long terme soit en place. Les versions bêta précédentes prenaient en charge -useNewBuildSystem=NO ou -useModernBuildSystem=NO mais il semble que cela ait été supprimé dans la version GM. Il semble qu'actuellement, la façon de procéder consiste à ajouter une paire clé-valeur ( <key>BuildSystemType</key><string>Original</string> ) à ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings .

Correction à plus long terme

L'option la plus simple serait d'éliminer Flutter.framework de l'étape Intégrer les frameworks ci-dessus et de toujours compter sur l'installation du pod, même dans le cas où il n'y a pas de dépendances de plugin. Nous aurions besoin de mettre à jour l'outil Flutter pour modifier automatiquement les projets existants afin de supprimer Flutter.framework de l'étape Intégrer les frameworks.

pro : code plus simple. inconvénient : fait de Cocopods une étape d'installation requise pour le développement de Flutter, la première exécution implique un téléchargement énorme et très lent de leur référentiel.

Une option légèrement plus agréable serait pour nous de détecter automatiquement si le projet utilise des plugins ou non, et de modifier le projet Xcode pour vérifier et supprimer Flutter.framework de l'étape Embed Frameworks automatiquement si des plugins sont en cours d'utilisation ou de l'ajouter sinon.

pro : meilleure expérience utilisateur. inconvénient : code plus complexe.

Dans tous les cas, nous avons besoin d'un mécanisme pour éditer automatiquement le fichier project.pbxproj et supprimer le framework de l'étape de construction des frameworks d'intégration. La prise en charge de son rajout n'est pas beaucoup de travail incrémentiel et se traduit par une meilleure expérience.

/cc @tvolkert @gspencergoog @dnfield

@cbracken Merci beaucoup, ça marche, merci pour votre aide

Re-copier la vraie migration puisqu'elle a depuis été enterrée.

Si vous voyez toujours cette erreur, vous devrez migrer votre projet Xcode :

  1. Fichier > Paramètres de l'espace de travail... > Système de construction, remplacez la liste déroulante par Nouveau système de construction (par défaut)
  2. Dans votre Podfile, ajoutez la ligne
install! 'cocoapods', :disable_input_output_paths => true

Voir https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile par exemple.

  1. Courir flutter build ios

Je vais verrouiller ceci afin que ces instructions de migration restent à la fin de ce numéro. Veuillez déposer un nouveau problème si vous rencontrez des problèmes supplémentaires après avoir suivi ces instructions.

MISE À JOUR : Si vous suivez les instructions de migration sur https://flutter.dev/docs/development/ios-project-migration, vous pouvez supprimer install! 'cocoapods', :disable_input_output_paths => true de votre ios/Podfile . Cela peut améliorer le temps de compilation si vous utilisez des plugins Flutter.

Cette page vous a été utile?
0 / 5 - 0 notes