Flutter - Erstellen für iOS, aber das verknüpfte und eingebettete Framework 'App.framework' wurde für iOS Simulator erstellt


13

Nach dem Update auf Catalina 10.15.4 Beta mit Xcode 13.4 Beta, das auch Simulator auf 13.4 (921.4) aktualisiert hat.

Die Anwendung wird auf einem physisch angeschlossenen Gerät kompiliert und ordnungsgemäß ausgeführt, aber keine Simulatoren von Geräten können diese Phase bestehen.

Ich habe die Fehler bekommen

Erstellen für iOS, aber das verknüpfte und eingebettete Framework 'App.framework' wurde für iOS Simulator erstellt.

oder

Erstellen für iOS Simulator, aber das verknüpfte und eingebettete Framework 'App.framework' wurde für iOS erstellt.

Geben Sie hier die Bildbeschreibung ein

Wie kann ich das beheben?

Antworten:


42

Xcode 11.4 hat die Art und Weise geändert, in der Frameworks verknüpft und eingebettet sind, und es können Probleme beim Wechsel zwischen iOS-Geräten und Simulatoren auftreten. Flutter v1.15.3 und höher migriert Ihr Xcode-Projekt automatisch.

Befolgen Sie die nachstehenden Anweisungen, um sich zu lösen.

  • Schnelle Lösung (damit Ihr Simulator funktioniert)

rm -rf ios/Flutter/App.framework

  • Offiziell empfohlene Schritte zur manuellen Migration

    1. Öffnen Sie im Flutter-App-Verzeichnis ios / Runner.xcworkspace in Xcode.
    2. Suchen Sie im Navigatorbereich die Flutter-Gruppe und entfernen Sie App.framework und Flutter.framework. Geben Sie hier die Bildbeschreibung ein
    3. In den Runner-Zielerstellungseinstellungen Build-Phasen> Binär mit Bibliotheken verknüpfen bestätigen Sie, dass App.framework und Flutter.framework nicht mehr vorhanden sind. Bestätigen Sie auch unter Build-Phasen> Frameworks einbetten.

Geben Sie hier die Bildbeschreibung ein

  1. Ändern Sie die Build-Einstellungen für das Runner-Ziel wie folgt: Build-Phasen> Thin Binary-Skript:

    / bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh" einbetten

    / bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh" dünn

Geben Sie hier die Bildbeschreibung ein

  1. In den Runner-Ziel- Build-Einstellungen> Andere Linker-Flags

    (OTHER_LDFLAGS) füge $ (geerbt) -Framework Flutter hinzu

Geben Sie hier die Bildbeschreibung ein

Ich hoffe es hilft!


Die Frage wurde kürzlich geschlossen und erhielt viele Abstimmungen, da sie unklar ist und auf Meta veröffentlicht wurde . Es sieht so aus, als ob Sie verstehen, worum es geht. Haben Sie eine Idee, wie Sie es in Form bringen können, damit es nicht ganz so unklar ist?
Bestimmte Leistung

1
Funktioniert wie Charme!
Giedrius Šlikas

3

Xcode 11.4 hat die Art und Weise geändert, in der Frameworks verknüpft und eingebettet sind, was zu Problemen beim Wechsel zwischen iOS-Geräten und Simulatoren führt.

Bitte folgen Sie der offiziellen Anleitung zur Migration Ihres Projekts.


Nachdem ich dem offiziellen Handbuch gefolgt war, wurde meine App immer noch nicht auf mein physisches Gerät geladen. Erst nachdem Sie der Anleitung gefolgt waren, flutter cleanmehrmals ausgeführt, den Pods/Ordner gelöscht und Podfile.lockdann mit pod installim ios-Ordner neu installiert hatten, funktionierte es schließlich.
Matthew Lerner

2

Auf Xcode 11.4 aktualisiert. Ios 13.4, Iphone X. App ruft nur Daten mithilfe der API ab. Die App wurde auf einem weißen Bildschirm gestartet und stürzt schließlich sowohl auf dem Simulator als auch auf dem Gerät ab.

Ich folgte dem offiziellen Leitfaden (ich auch rm -rf ios/Flutter/App.framework) flutter.dev/docs/development/ios-project-migration . Ich bin mehrmals gelaufenflutter clean

Ich habe auch versucht, Pods / Ordner und Podfile.lock zu löschen und dann mit pod installim ios-Ordner neu zu installieren .

Da ich asynchrone Daten verwende, habe ich auch als erste Zeile in main () hinzugefügt

WidgetsFlutterBinding.ensureInitialized();

Keine Hilfe, App hat keinen Simulator gestartet.

Dann habe ich ios/und android/Ordner entfernt. Danach habe ich im Projektordner einen Befehl ausgeführt flutter create ., der die genannten Ordner neu generiert.

Danach startete meine App sowohl auf dem Simulator als auch auf dem Gerät einwandfrei. Ich hoffe, das würde anderen helfen. HINWEIS!! Wenn Sie Änderungen an diesen Ordnern manuell vorgenommen haben, erstellen Sie bitte zuvor eine Sicherungskopie oder ein Commit.


1

Nachdem ich mehrere Tage lang versucht hatte, eine Lösung zum Testen der Flutter-App auf einem iOS-Gerät zu finden, fand ich schließlich Folgendes:

flutter clean
flutter build ios

-Öffnen Sie xCode und führen Sie die App auf Ihrem Gerät aus.


Funktioniert immer noch nicht für mich. macht das gleiche, wenn ich versuche, denflutter build ios
Raymond Ativie


Ja, das habe ich letztendlich getan, danke
Raymond Ativie

0

Ich habe die Lösung auf der offiziellen Website von flutter ausprobiert, aber sie hat bei mir nicht funktioniert. Deshalb habe ich eine temporäre Lösung gefunden, die für mich funktioniert hat, aber ich habe einige harte Arbeit geleistet: Hier ist mein Beispiel mit dem Projekt stick_framework, das frisch ist neues Projekt (zum ersten Mal auf dem Simulator ausgeführt)

  1. Ich habe 2 Ordner im
    Flatterprojekt erstellt, die "ios_simulator" und "ios_real_device" heißen. Geben Sie hier die Bildbeschreibung ein

  2. Jetzt war mein erster Build für den Simulator, dann möchte ich zu einem echten Gerät wechseln. Ich werde den ios-Ordner im Flutter-Projekt in den "ios_simulator" verschieben.

  3. Ich öffne das Projekt mit Visual Studio Code und führe "flutter create" aus. und jetzt werde ich ein echtes Gerät auswählen, um das Projekt neu zu erstellen (wenn Ihr Simulator online ist, beenden Sie bitte). Geben Sie hier die Bildbeschreibung ein
  4. Jetzt warte ich auf das Ende des Builds und laufe fehlerfrei auf dem realen Gerät. Jetzt habe ich 2 iOS-Projekt 1 für Simulatoren und eines für reale Geräte.
  5. Wenn ich das nächste Mal wieder auf dem Simulator ausgeführt werden möchte, entferne ich einfach den aktuellen ios-Ordner und kopiere den ios-Ordner, den ich auf "ios_simulator" abgelegt habe, wieder in den flatternden Projektordner. Ich hoffe das hilft

0

Ein manuelles Upgrade von Flutter auf Version 1.15 löst dieses Problem ebenfalls. Laufen flutter version v1.15.17hat mir geholfen.

Sie können auch zu betaoder devKanäle wechseln, indem Sie den flutter channelBefehl ausführen. Überprüfen Sie Ihren Code jedoch auf alle BC-Änderungen ...


0

In meinem Fall funktioniert es nur Simulator (Debug). Wenn Sie Ihre App im App Store (Release) bereitstellen möchten, empfehle ich Ihnen dringend, die Flutter-Version mit zu aktualisieren

flutter version v1.15.17

Andernfalls würden Sie auf eine abgestürzte App mit weißem Bildschirm stoßen.

Aktualisieren Sie einfach die Flatterversion, dann funktionieren alle Dinge gut


1.15.17ist noch nicht auf dem stabilen Kanal.
Loolooii
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.