Wenn ich die Anwendung in der MacOs-Umgebung debuggen möchte, wird ein solcher Fehler ausgegeben:
Mehrere Befehle erzeugen '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework
1) Ziel 'Runner' hat einen Kopierbefehl von '/ios/Flutter/Flutter.framework' nach '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) Dieser Befehl hängt vom Befehl in Target 'Runner' ab: Skriptphase „[CP] Embed Pods Frameworks“
Warnung: Duplizierte Ausgabedatei wird ignoriert: '//build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework' (im Ziel 'Runner')
note: Verwenden des neuen Builds systemnote: Buildnote planen: Build-Beschreibung erstellen
Mac 10.14 Beta
Xcode 10 Beta
Wie man es repariert? Danke vielmals
Können Sie bitte genaue Schritte zur Reproduktion angeben?
Wie haben Sie das Projekt erstellt?
Welche Dateien haben Sie geändert, welche Änderungen haben Sie vorgenommen?
Bitte fügen Sie die Ausgabe von flutter doctor -v
.
Ich konnte es beheben, indem ich das Arbeitsbereichsprojekt Runner
in Xcode 10 öffnete. Navigieren Sie dann zu File
, Workspace Settings
und ändern Sie das Build-System in Legacy Build System
.
Danke vielmals! Es klappt.
Dieses Problem betrifft alle Flutter-Projekte, die mit Xcode 10 erstellt wurden und eine Abhängigkeit von CocoaPods haben – normalerweise sind dies diejenigen, die auf Plugins angewiesen sind.
Es gibt zwei Problemumgehungen:
ios/Runner.xcworkspace
und ändern Sie das Build-System in Legacy Build System
.ios/Runner.xcworkspace
öffnenRunner
.Runner
und dann die Registerkarte Build Phases
.Embed Frameworks
und wählen Sie Flutter.framework
aus der Liste der eingebetteten Frameworks aus.-
, um Flutter.framework
aus der Liste zu entfernen (achten Sie darauf, dass Sie App.framework
behalten ).Wenn Plugins verwendet werden, gibt es zwei konkurrierende Build-Aktionen, die Flutter.framework in das Frameworks-Verzeichnis der Build-Anwendung kopieren:
Embed Frameworks
Build-Phase für das Runner-Projekt[CP] Embed Pods Frameworks
Build-Phase, die pod install
im Projekt erstellt.Punkt (1) dient dazu, sicherzustellen, dass das Framework in die erstellte App kopiert wird, falls keine Plugins vorhanden sind (und daher keine CocoaPods-Integration im Xcode-Projekt). Punkt (2) ist vorhanden, weil Flutters podspec Flutter.framework
als vended_framework deklariert und CocoaPods automatisch einen Kopierschritt für jedes solche vended_framework in der transitiven Schließung von CocoaPods-Abhängigkeiten hinzufügt.
Die sofortige Lösung besteht darin, einen Weg zu finden, um automatisch wieder auf den Legacy-Build-Fix zuzugreifen, bis eine längerfristige bessere Lösung vorhanden ist. Frühere Betas unterstützten -useNewBuildSystem=NO
oder -useModernBuildSystem=NO
aber es sieht so aus, als ob dies im GM-Build entfernt wurde. Es sieht so aus, als ob Sie dies derzeit tun, indem Sie ein Schlüssel-Wert-Paar ( <key>BuildSystemType</key><string>Original</string>
) zu ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
hinzufügen.
Die einfachste Möglichkeit wäre, Flutter.framework aus dem obigen Embed Frameworks-Schritt zu entfernen und sich immer auf die Pod-Installation zu verlassen, auch wenn keine Plugin-Abhängigkeiten bestehen. Wir müssten das Flutter-Tool aktualisieren, um vorhandene Projekte automatisch zu bearbeiten, um Flutter.framework aus dem Schritt Embed Frameworks zu entfernen.
Pro: einfacherer Code. con: macht Cocoapods zu einem erforderlichen Installationsschritt für die Flutter-Entwicklung, die erste Ausführung erfordert einen riesigen und sehr langsamen Download ihres Repos.
Eine etwas schönere Option wäre, automatisch zu erkennen, ob das Projekt Plugins verwendet oder nicht, und das Xcode-Projekt zu bearbeiten, um Flutter.framework automatisch aus dem Embed Frameworks-Schritt zu überprüfen und zu entfernen, wenn Plugins verwendet werden oder es hinzuzufügen, wenn nicht.
pro: bessere Benutzererfahrung. con: komplexerer Code.
In jedem Fall benötigen wir einen Mechanismus, um die Datei project.pbxproj automatisch zu bearbeiten und das Framework aus dem Buildschritt zum Einbetten von Frameworks zu entfernen. Die Unterstützung des erneuten Hinzufügens ist nicht viel inkrementelle Arbeit und führt zu einer besseren Erfahrung.
/cc @tvolkert @gspencergoog @dnfield
Tut mir leid, ich wollte Ihren Issue Tracker nicht überfluten.
Ich habe diese Auflösung befolgt #20685
aber jetzt kommt es zu folgendem fehler
Hat jemand eine Idee, wie man das lösen kann?
@gi097 @cbracken @zoechi @sidealice @hungrymonkey
@tiagosito Ein Patch wird momentan im master
Zweig landen. Sehen Sie sich vorerst die in meinem Kommentar oben aufgeführten
@tiagosito Ein Patch wird momentan auf dem Master landen. Sehen Sie sich vorerst die in meinem Kommentar oben aufgeführten
@cbracken Ich bin Option 2 gefolgt, die du gemeldet hast #20685
Aber ich hatte dieses kleine Problem #21989
Wurde so gelöst #21989
Ich verwende den Master-Kanal nicht. Wenn der von Ihnen erwähnte Patch veröffentlicht wird, werde ich dann auf dem Beta-Kanal mit derselben Lösung konfrontiert?
@cbracken und @gi097 erstmal vielen Dank
hatte dieses Problem heute auch, nachdem ich zu iOS 12 gewechselt war, was dann xcode 10 erforderte, was dann zum Flattern führte. Option 2 oben hat funktioniert, aber Sie sollten Ihren Paket-Build-Cache löschen:
~/flutter/.pub-cache/hosted/
flutter clean
flutter packages get
sonst kratzt man sich am kopf.
Die 'sofortige Lösung' in meinem obigen Kommentar ist auf Master gelandet. Wir arbeiten daran, dies so schnell wie möglich in den dev
Kanal zu bringen.
Zu Ihrer Information, das ist jetzt auf dem Kanal dev
gelandet.
Groß!
Übrigens, wie wenden wir diesen Patch in bestehenden Projekten an? Einfach durch ein Flatter-Upgrade?
@tadejkan Sie sollten flutter channel dev
ausführen, um zum Entwicklungskanal zu wechseln, dann flutter upgrade
.
@cbracken ein Zweifel, der bleibt, ist ... wir werden den
Mit anderen Worten, wendet der Patch die Lösung von Schritt 1 oder Schritt 2 an, die Sie hier vorgestellt
@tiagosito Der Patch, den ich gelandet habe, implementiert die obige " wählen Sie das Build-System vor Xcode 10 zurück), was uns Zeit verschafft, einen Fix zu implementieren, der dies richtig macht. Dafür gibt es eine alternative Schnelllösung, die CocoaPods jedoch zu einer Voraussetzung für alle Flutter-Apps machen würde, die auf iOS basieren (auch für diejenigen, die nicht auf Plugins angewiesen sind). Angesichts der anfänglichen Download-Größe/-Zeit für einen ersten Lauf von CocoaPods würde ich es wirklich vorziehen, diesen Weg zu vermeiden.
Die richtige Lösung dafür besteht darin, dass wir erkennen, wann CocoaPods/Plugins verwendet werden, und uns darauf verlassen, dass CocoaPods in diesen Fällen Flutter.framework
in die Ausgabe-App einbetten, und in allen anderen Fällen den Einbettungsschritt selbst aufrufen. Daran arbeite ich als nächstes.
Ich stehe vor Problemen beim Erstellen von iOS, die ich jetzt 4 volle Tage lang nicht lösen kann ... ich werde jetzt sehr hilflos, da ich so viele Dinge und Kombinationen ausprobiert habe; immer sehr verwirrt und traurig.
Dies ist der neueste Fehler nach mehreren verschiedenen Fehlern:
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 und @LiveRock Ihre Probleme (doppelte Symbole auf x86_64-Simulator-Builds) sehen in keinem Zusammenhang mit diesem. Bitte verfolgen Sie den Fortschritt auf #22020.
ETA für Beta-Kanal?
@lukepighetti, dies wird jetzt auf den Kanal beta
verschoben (vor flutter upgrade
entfernt!
Habe mein Problem behoben. Dankeschön!
@sidealice ist das auch bei dir behoben?
Danke, Lösung 2 hat funktioniert!
Ohne zusätzliche Informationen können wir dieses Problem leider nicht beheben. Wir werden diesen Fehler daher vorerst ungern schließen. Bitte zögern Sie nicht, den Fehler zu kommentieren, wenn Sie weitere Informationen für uns haben; wir werden es gleich wieder öffnen!
Danke für deinen Beitrag.
cc @Hixie
Dank bro ! Es klappt.
Ich bekomme dieses Problem immer noch auf dem stabilen Kanal von Flutter v1.0.0
Soll der Fix im Stable sein?
[✓] Flutter (Kanal stabil, v1.0.0, unter Mac OS X 10.14.1 18B75, Gebietsschema en-GB)
• Flutter-Version 1.0.0 unter /usr/local/share/flatter
• Framework-Revision 5391447fae (vor 3 Wochen), 2018-11-29 19:41:26 -0800
• Motorrevision 7375a0f414
• Dart-Version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)[✓] iOS-Toolchain - für iOS-Geräte entwickeln (Xcode 10.1)
• Xcode unter /Applications/Xcode.app/Contents/Developer
• Xcode 10.1, Build-Version 10B61
• iOS-Bereitstellung 2.0.0
• CocoaPods-Version 1.5.3
@JannieT bitte überprüfen Sie auch dev
.
Ich weiß nicht, ob es in stable
, aber wenn es auf dev
funktioniert, ist die Antwort wahrscheinlich "nein".
Vielen Dank! Nur zur Bestätigung, der Fix ist in Stable v1.0.0
Ich bin auf das Problem gestoßen, weil ich beim Versuch, ein Archiv zu erstellen, die .xcodeproject-Datei anstelle des dokumentierten .xcworkspace geöffnet habe.
Ich habe gerade das gleiche Problem.
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!
Ich habe das Legacy Build System ausprobiert, aber dann hatte ich ein anderes Problem. Ich habe auch versucht, Flutter.framework
zu entfernen, aber der Fehler ist der gleiche.
#import <barcode_scan/BarcodeScanPlugin.h> # 'barcode_scan/BarcodeScanPlugin.h' file not found
Das betroffene Plugin ist barcode_scan .
Was es für mich gelöst hat, ist https://github.com/apptreesoftware/flutter_barcode_reader/issues/44#issuecomment -460415307.
open -a Xcode ios
Wiedereröffnung, da wir zu diesem Zeitpunkt nur die Problemumgehung gefunden haben, nicht die langfristige Lösung, um zum neuen Build-System zu wechseln.
Ohne zusätzliche Informationen können wir dieses Problem leider nicht beheben. Wir werden diesen Fehler daher vorerst ungern schließen. Bitte zögern Sie nicht, den Fehler zu kommentieren, wenn Sie weitere Informationen für uns haben; wir werden es gleich wieder öffnen!
Danke für deinen Beitrag.
hilft mir, Flattern sauber zu machen und dann durch Android Studio zu bauen
[✓] 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
Fehler in 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”
Fest:
open -a Xcode ios
laufen lassen, aber es scheint, als hätte es nicht funktioniert.
Also habe ich das Projekt stattdessen in Xcode mit Runner.xcworkspace
geöffnet und es hat funktioniert.
Dieses Problem tritt bei mir immer noch auf, auch wenn ich das Projekt über den Arbeitsbereich öffne. Nur das Ändern des Build-Systems auf Legacy scheint das Problem zu beheben.
Wir können auch die CocoaPods-Installationsoption disable_input_output_paths nutzen, die die Eingabe- und Ausgabedateien aus der [CP] Emded Pods Framework-Build-Phase entfernt. Diese Installationsoption wurde hinzugefügt, weil das neue Xcode-Buildsystem das Skript nicht ausführen konnte, selbst wenn die Eingabedateien berührt wurden. Siehe https://www.ralfebert.de/ios/blog/cocoapods-clean-input-output-files.
Vorteile:
Nachteile:
@jmagman Super ! Dieser Ansatz sieht für mich gut aus. Wenn wir an den Punkt kommen, an dem wir Cocoapods-Plugins sehen, die wirklich teuer zu kompilieren sind, können wir das als Optimierung behandeln. Damit ist das unmittelbare Risiko zwischenzeitlich gelöst!
Danke!!!!!
Danke
Wenn dieser Fehler weiterhin angezeigt wird, müssen Sie Ihr Xcode-Projekt migrieren:
install! 'cocoapods', :disable_input_output_paths => true
Siehe zum Beispiel https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile .
@jmagman danke - aber könnte das mit #18673 zusammenhängen? Denn nach der Migration (über flutter upgrade
, die diese Änderung auf meinem Computer automatisch in der Poddatei durchgeführt hat), kann ich mit flutter build ios
erstellen, aber beim Versuch, in Xcode zu archivieren, laufe ich den Fehler # 18673.
@jmagman danke - aber könnte das mit #18673 zusammenhängen? Denn nach der Migration (über
flutter upgrade
, die diese Änderung auf meinem Computer automatisch in der Poddatei durchgeführt hat), kann ich mitflutter build ios
erstellen, aber beim Versuch, in Xcode zu archivieren, laufe ich den Fehler # 18673.
@jmagman Ich habe die Lösung gefunden, tatsächlich hat diese https://github.com/flutter/flutter/issues/16246#issuecomment -476329255 mein Problem gelöst. Entschuldigung für jegliche Unannehmlichkeiten.
@jmagman Könnten Sie für diejenigen von uns, die mit XCode weniger vertraut sind, Schritt 3 näher erläutern? Wo wird die Build-Phase des Runner-Ziels "[CP] Embed Pods Framework" gefunden, um alle Ausgabedateien zu entfernen?
Fand es. Klicken Sie in der linken Navigationsleiste auf "Runner", dann auf die Registerkarte "Build Phases", scrollen Sie dann nach unten zu "Output Files", wählen Sie alle aus und klicken Sie dann auf die Schaltfläche "Subtract", um sie zu entfernen
Wie kann ich das ohne Mac lösen? Ich verwende eine Cloud-Pipeline, um für iOS zu erstellen, muss aber dieses Problem lösen ...
Wenn dieser Fehler weiterhin angezeigt wird, müssen Sie Ihr Xcode-Projekt migrieren:
- Datei > Workspace-Einstellungen... > Build-System, Dropdown-Menü in Neues Build-System ändern (Standard)
- Fügen Sie in Ihrem Podfile die Zeile hinzu
install! 'cocoapods', :disable_input_output_paths => true
Siehe zum Beispiel https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile .
- Entfernen Sie in der Build-Phase des Runner-Ziels "[CP] Embed Pods Framework" alle Ausgabedateien.
Oder Sie können #1 und #2 ausführen und dann pod install
aus dem ios-Verzeichnis ausführen, und CocoaPods sollte diese Ausgabedatei in der Build-Phase automatisch entfernen.
@gincos Wenn Sie keinen Mac haben, können Sie in PR https://github.com/flutter/flutter/pull/33684/ nachsehen, wie Sie die Xcode-Dateien manuell optimieren können. Wenn Sie einen Mac haben, folgen Sie bitte stattdessen den obigen Schritten!
install! 'cocoapods', :disable_input_output_paths => true
Hoffentlich sollte Ihre Cloud-Pipeline pod install
ausführen und sich um Nummer 3 oben für Sie kümmern.
Wenn der Fehler weiterhin angezeigt wird, können Sie ios/Runner.xcodeproj/project.pbxproj bearbeiten, um die Ausgabedatei manuell zu entfernen. Bitte seien Sie dabei vorsichtig! Die Xcode-Projektdatei ist nicht korrupt.
https://github.com/flatter/flatter/pull/33684/files#diff -e9e57f7f2e911a135acd8f08e79b20e1
@jmagman Danke! Das funktionierte wie ein Zauber! Ja, der Cloud-Anbieter führt die Pod-Installation aus und produziert jetzt in der neuesten Beta ein korrektes Artefakt sowohl für Android als auch für iOS.
Betroffene Projekte
Dieses Problem betrifft alle Flutter-Projekte, die mit Xcode 10 erstellt wurden und eine Abhängigkeit von CocoaPods haben – normalerweise sind dies diejenigen, die auf Plugins angewiesen sind.
Problemumgehungen
Es gibt zwei Problemumgehungen:
- Option 1: Verwenden Sie das Legacy-Build-System . Wie von @gi097 erwähnt , öffnen Sie
ios/Runner.xcworkspace
und ändern Sie das Build-System inLegacy Build System
.Option 2: Verwenden Sie das neue Xcode 10-Build-System.
ios/Runner.xcworkspace
öffnen- Wählen Sie in der Seitenleiste des Projektnavigators das Projekt
Runner
.- Wählen Sie in der Hauptansicht das Ziel
Runner
und dann die RegisterkarteBuild Phases
.- Erweitern Sie die Phase
Embed Frameworks
und wählen SieFlutter.framework
aus der Liste der eingebetteten Frameworks aus.- Klicken Sie auf
-
, umFlutter.framework
aus der Liste zu entfernen (achten Sie darauf,App.framework
_behalten_).Tiefere Ursache
Wenn Plugins verwendet werden, gibt es zwei konkurrierende Build-Aktionen, die Flutter.framework in das Frameworks-Verzeichnis der Build-Anwendung kopieren:
- Die
Embed Frameworks
Build-Phase für das Runner-Projekt- Die
[CP] Embed Pods Frameworks
Build-Phase, diepod install
im Projekt erstellt.Punkt (1) dient dazu, sicherzustellen, dass das Framework in die erstellte App kopiert wird, falls keine Plugins vorhanden sind (und daher keine CocoaPods-Integration im Xcode-Projekt). Punkt (2) ist vorhanden, weil Flutters podspec
Flutter.framework
als vended_framework deklariert und CocoaPods automatisch einen Kopierschritt für jedes solche vended_framework in der transitiven Schließung von CocoaPods-Abhängigkeiten hinzufügt.Sofortige Lösung
Die sofortige Lösung besteht darin, einen Weg zu finden, um automatisch wieder auf den Legacy-Build-Fix zuzugreifen, bis eine längerfristige bessere Lösung vorhanden ist. Frühere Betas unterstützten
-useNewBuildSystem=NO
oder-useModernBuildSystem=NO
aber es sieht so aus, als ob dies im GM-Build entfernt wurde. Es sieht so aus, als ob Sie dies derzeit tun, indem Sie ein Schlüssel-Wert-Paar (<key>BuildSystemType</key><string>Original</string>
) zuios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
hinzufügen.Längerfristige Korrektur
Die einfachste Möglichkeit wäre, Flutter.framework aus dem obigen Embed Frameworks-Schritt zu entfernen und sich immer auf die Pod-Installation zu verlassen, auch wenn keine Plugin-Abhängigkeiten bestehen. Wir müssten das Flutter-Tool aktualisieren, um vorhandene Projekte automatisch zu bearbeiten, um Flutter.framework aus dem Schritt Embed Frameworks zu entfernen.
Pro: einfacherer Code. con: macht Cocoapods zu einem erforderlichen Installationsschritt für die Flutter-Entwicklung, die erste Ausführung erfordert einen riesigen und sehr langsamen Download ihres Repos.
Eine etwas schönere Option wäre, automatisch zu erkennen, ob das Projekt Plugins verwendet oder nicht, und das Xcode-Projekt zu bearbeiten, um Flutter.framework automatisch aus dem Embed Frameworks-Schritt zu überprüfen und zu entfernen, wenn Plugins verwendet werden oder es hinzuzufügen, wenn nicht.
pro: bessere Benutzererfahrung. con: komplexerer Code.
In jedem Fall benötigen wir einen Mechanismus, um die Datei project.pbxproj automatisch zu bearbeiten und das Framework aus dem Buildschritt zum Einbetten von Frameworks zu entfernen. Die Unterstützung des erneuten Hinzufügens ist nicht viel inkrementelle Arbeit und führt zu einer besseren Erfahrung.
/cc @tvolkert @gspencergoog @dnfield
@cbracken Vielen Dank, es funktioniert, danke für deine Hilfe
Die echte Migration neu zu kopieren, da sie seitdem begraben wurde.
Wenn dieser Fehler weiterhin angezeigt wird, müssen Sie Ihr Xcode-Projekt migrieren:
install! 'cocoapods', :disable_input_output_paths => true
Siehe zum Beispiel https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile .
flutter build ios
Ich werde dies sperren, damit diese Migrationsanweisungen am Ende dieser Ausgabe bleiben. Bitte reichen Sie ein neues Problem ein, wenn Sie weitere Probleme haben, nachdem Sie diese Anweisungen befolgt haben.
UPDATE: Wenn Sie die Migrationsanweisungen unter https://flutter.dev/docs/development/ios-project-migration befolgen, können Sie install! 'cocoapods', :disable_input_output_paths => true
aus Ihrem ios/Podfile
entfernen. Dies kann die Kompilierungszeit verbessern, wenn Sie Flutter-Plugins verwenden.
Hilfreichster Kommentar
Ich konnte es beheben, indem ich das Arbeitsbereichsprojekt
Runner
in Xcode 10 öffnete. Navigieren Sie dann zuFile
,Workspace Settings
und ändern Sie das Build-System inLegacy Build System
.