Die Flatter-Signatur ist ungültig, wenn sie auf einem iOS-Gerät versucht wird

11

TL; DR

Siehe Antwort unten: https://stackoverflow.com/a/60013390/1121497

Es sieht so aus, als wäre es ein Problem mit iOS 13.3 gewesen, da ich gerade 13.4 installiert habe und Flutter jetzt auf meinem iPhone funktioniert. :) :)


Ich versuche, eine neue Flutter-App (die von erstellte Beispiel-App flutter create) auf einem iOS-Gerät (einem iPhone XS) auszuführen . Xcode schafft es, es zu installieren, aber dann stürzt es mit der folgenden Meldung ab:

dyld: Library not loaded: @rpath/Flutter.framework/Flutter
  Referenced from: /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Runner
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter: code signature invalid for '/private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter'

Wenn ich es versuche flutter run, wird die App auch geöffnet und stürzt ab. Und der Befehl wartet ewig:

$ flutter run
Launching lib/main.dart on Ferran Maylinch’s iPhone in debug mode...

Automatically signing iOS for device deployment using specified development team in Xcode project: 25D86TPBWG
Running Xcode build...                                                  

 ├─Assembling Flutter resources...                           4.3s
 └─Compiling, linking and signing...                        13.3s
Xcode build done.                                           21.0s
Installing and launching...                                             
(This is taking an unexpectedly long time.)

In Xcode habe ich ein Team (Personal Team) konfiguriert und das Signaturzertifikat (Apple Development Certificate) scheint in Ordnung zu sein, da ich ein Hello World Swift-Projekt auf meinem Gerät installieren kann.

Hinweis: Ich bezahle kein Konto für das Apple Developer Program . Ist das unbedingt erforderlich, um Flutter-Apps auf iOS-Geräten auszuführen?

Ich habe die MacOS-Anweisungen befolgt und flutter doctorgesagt, ich habe alles, was ich für iOS brauche:

[] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57, locale en-ES)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[] Xcode - develop for iOS and macOS (Xcode 11.3)
[!] Android Studio (version 3.5)Flutter plugin not installed; this adds Flutter specific functionality.Dart plugin not installed; this adds Dart specific functionality.
[] IntelliJ IDEA Ultimate Edition (version 2019.3.1)
[!] VS Code (version 1.41.1)Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[] Connected device (1 available)

! Doctor found issues in 3 categories.

Wie Sie sehen können, habe ich den stabilen Kanal verwendet, um Probleme mit dem Beta-Kanal zu verwerfen, aber ich arbeite normalerweise im Beta-Kanal, um ein Flattern für das Web zu erzeugen (was gut funktioniert).

Im iOS-Simulator funktioniert die App auch einwandfrei.

Kürzlich habe ich festgestellt, dass ich die Datei nicht habe ios/Podfile. Ich fand diesen Beitrag darüber zu sprechen. Ich weiß nicht, ob dies in meinem Fall wichtig ist oder nicht, aber ich habe versucht, diese Poddatei manuell hinzuzufügen . Wie auch immer, ich bekomme den gleichen Signaturfehler.

Frustriert davon wechselte ich vorerst zu NativeScript .

Ferran Maylinch
quelle
Sie versuchen, es auf einem realen Gerät im Debug- oder Release-Modus auszuführen?
Sunkuu7
@ SlahLayouni Es war im Debug-Modus. Ich habe den Release-Modus ausprobiert und er schlägt mit demselben Fehler fehl.
Ferran Maylinch
Versuchen Sie zuerst, ein Release zu erstellen, und führen Sie es dann von xcode als Release aus. flutter build ios --release
Sunkuu7
1) Haben Sie den iOS-Simulator ausprobiert? 2) Haben Sie eine "Hello World" in Swift / Xcode auf Ihrem iPhone-Gerät bereitgestellt / ausgeführt? Das persönliche Zertifikat sollte für die Bereitstellung auf Ihrem Telefon geeignet sein.
Morrison Chang

Antworten:

8

BEARBEITEN: Dies ist auf iOS 13.4 behoben, das am 24. März veröffentlicht wurde.

Dies ist eine iOS 13.3.1-Regression, die nichts mit Flutter zu tun hat. Ich konnte den Absturz ohne Flutter- oder CocoaPods-Code reproduzieren, indem ich ein neues Xcode-Projekt erstellte, ein Framework-Ziel hinzufügte und ein Personal Team-Bereitstellungsprofil auswählte.

Siehe GitHub-Problem: https://github.com/flutter/flutter/issues/49504#issuecomment-581554697 .

Der Fehler sollte sich nicht auf die Bereitstellung von Profilen oder Apps des Developer Account-Teams auswirken, die bereits signiert und im App Store verteilt sind.

Leider kann die einzige Problemumgehung darin bestehen, ein Upgrade der Entwicklungsgeräte auf 13.3.1 zu vermeiden, bis dies behoben ist.

Jenn
quelle
Vielen Dank! Ich hoffe das ist so schnell wie möglich behoben!
Ferran Maylinch
Das ist also ein Problem auf iOS-Ebene? Ich habe auch dieses Problem auf dem iPhone mit iOS 13.3.1 Version
Adromil Balais
Ja, dies ist ein Problem mit iOS 13.3.1 und späteren Ablehnungen von vom Personal Team-Bereitstellungsprofil signierten Frameworks. Es ist nicht spezifisch für Flutter. Die Links im GitHub-Kommentar verweisen auf andere Projekte, und ich konnte problemlos mit einem brandneuen Framework in Xcode reproduzieren, ohne Flutter einzubetten.
Jenn
Ich habe es gerade mit iOS 13.4 versucht und es funktioniert! Ich könnte meine Flutter-App auf einem echten iPhone von Xcode und auch von IntelliJ IDEA ausführen. Ich denke, dass es auch über die Kommandozeile funktionieren wird.
Ferran Maylinch
4

Soweit ich sehen kann, handelt es sich um ein Flutter-Kompatibilitätsproblem mit iOS 13.3.1. In meinem Fall läuft meine App auf dem iPhone XR mit iOS 13.3 einwandfrei, stürzt jedoch beim Start auf einem anderen iPhone XR mit iOS 13.3.1 ab. Kann nicht im Simulator getestet werden, da es sich um eine Kamera-App handelt, die jedoch sowohl auf physischen Android-Geräten als auch auf Android-Emulatoren funktioniert.

Anfänger
quelle
Du hast recht. Gerade mit meinem iPad mit 13.3 getestet. Mein Telefon funktioniert nicht mit 13.3.1. Ich werde auf Beta 2 aktualisieren und es versuchen :-)
Ken Hui
13.3.1 Public Beta 2 hat das gleiche Problem.
Ken Hui
3
  1. Haben Sie der xcode-Lizenzvereinbarung zugestimmt? Wenn nicht, versuchen Sie es sudo xcodebuild -license.
  2. Sind deine Pods aktualisiert? Wenn nicht, navigieren Sie zum Ordner ios im Flatterprojekt in Ihrem Terminal und geben Sie pod installdann einpod update

Wenn dies nicht funktioniert, gehen Sie zum ios-Ordner in Ihrem Flatterprojekt und öffnen Sie Runner.xcworkspace, indem Sie zweimal darauf tippen. Es sollte so aussehen:

Geben Sie hier die Bildbeschreibung ein

Wenn xcode geöffnet wird, klicken Sie oben links auf Runner.

Geben Sie hier die Bildbeschreibung ein

Gehen Sie dann zu Signieren und Funktionen und wählen Sie in der Dropdown-Liste "Team" ein Feld aus. Wenn keine vorhanden ist, erstellen Sie ein Konto.

Geben Sie hier die Bildbeschreibung ein

Dann sollte in der "Bundle-ID" der Bundle-Name Ihrer App angezeigt werden. Fügen Sie am Ende .app hinzu. Wenn es beispielsweise "com.example.yourapp" ist, machen Sie es zu "com.example.yourapp.app" und drücken Sie die Eingabetaste.

Drücken Sie die Wiedergabetaste oben links, um die App auf dem ausgewählten Gerät auszuführen.

Yudhishthir Singh
quelle
Ich habe kein Podfile. Ich schaue auf diesen Beitrag stackoverflow.com/questions/51599686/…
Ferran Maylinch
Installieren Sie Cocoapods auf Ihrem Computer und führen Sie die Pod-Befehle in Ihrem iOS-Verzeichnis aus.
Yudhishthir Singh
Ich habe Cocoapods. Welche Pod-Befehle soll ich verwenden?
Ferran Maylinch
Pod installieren und dann Pod aktualisieren
Yudhishthir Singh
Ich habe meine Antwort bearbeitet, bitte schauen Sie sie sich an.
Yudhishthir Singh
1

Können Sie Schritt für Schritt folgen?

flutter channel master
flutter upgrade
flutter clean
flutter build ios
Dev
quelle
Ich habe das versucht. Auch auf Beta-Kanal.
Ferran Maylinch
Der Fehler hängt mit den Signaturfunktionen zusammen. Der Flatterzweig hat nichts damit zu tun.
Yudhishthir Singh
1

Dieser Beitrag ist keine Antwort, da ich auch mit diesem Problem zu kämpfen habe und dies schreibe, da es eine Weile ohne eine Lösung war

Ich möchte OP und anderen Mitgliedern hier nur weitere Einzelheiten mitteilen. Also habe ich alles wie OP angegeben.

Folgendes habe ich versucht:

  1. Podfile wird nicht erstellt (auch nach dem Ausführen auf Simulator und so weiter) und deshalb habe ich versucht, eine aus einer Flatter-Beispiel-App von Flutter Github aufzunehmen.

    • IOS-Verzeichnis gelöscht
    • Podfile hinzugefügt
    • Ran Pod Update.
    • Warnungen behoben (Pod-Debug- und Release-Konfigurationen für Xcode bereitgestellt)
    • FLUTTER_ROOT zu den benutzerdefinierten Einstellungen hinzugefügt (wie nicht vorhanden) und ich habe den Fehler Xcode-backend.sh erhalten (erinnere mich nicht genau, sorry)
    • Gebaut

Diese Schritte erzeugen also: diesen Fehler im Simulator. Gleiche Signaturfehler wie ohne Pod auf dem physischen Gerät

  • Alle Zertifikate aus dem Schlüsselbundzugriff gelöscht und über Xcode wiederhergestellt.

    Ergebnis: Nichts geändert

  • Xcode, Pod und damit verbundene Einstellungen wurden entfernt. Zertifikate entfernt. Alles nach einem Neustart wiederhergestellt (Neuinstallation)

    Ergebnis: Auch hier weder mit Pod noch ohne die gleichen Fehler zu erstellen

  • Ich habe Flutter auf den Dev-Kanal (1.14.1) aktualisiert und das Projekt mit neu generiert flutter create .

    Reran baut. Mit und ohne Schoten. Immer noch das gleiche

  • Außerdem habe ich versucht, die Signatur von Apple Developer auf iOS Developer für alle Ziele zu ändern (Pod enthalten).

    Darin habe ich einige Fehler bekommen, weil ich sogar versucht habe, Pods-Runner zu signieren (es gab ein wenig Hoffnung). Aber insgesamt nichts Neues.

  • Während ich ein Gerät unter iOS 13.3.1 Beta ausführe, habe ich Target auf 13.2 aktualisiert (derzeit maximal verfügbar?).

    Nee

  • Ich habe MacOS-Builds aktiviert und eine Mac-App erstellt

    Es läuft wie geplant, alles ist in Ordnung.

Um zusammenzufassen:

  • Dieses Problem hängt nicht vom Pod / Non-Pod-Projekt ab.
  • An diesem Problem hat sich zwischen dem neuesten stabilen Flattern und dem neuesten Entwickler nichts geändert (wie im Beitrag geschrieben).
  • Dieser Fehler wird durch die Neuinstallation von Xcode nicht behoben und steht nicht im Zusammenhang mit Schlüsselbundzertifikaten
  • Das Problem tritt nur auf, wenn nur für ein physisches iOS-Gerät (in meinem Fall iPhone X) erstellt wird. Simulator (ohne Pod) läuft gut.

Übrigens. Alles lief auf dem MacBook Pro 13 mit Catalina 10.15.3 und Xcode 11.3.1.

Jeder Lauf hatte das Flag -v und während der Builds wurde in den Protokollen nichts Verdächtiges gefunden

Nochmal. Es tut mir leid, wenn ich etwas falsch gemacht habe, aber ich wollte dieses Problem nicht duplizieren oder OP eine Bearbeitung vorschlagen, da dieser Beitrag ziemlich lang ist.

Emin Guliev
quelle
Vielen Dank für diese Antwort. Es ist nicht die Lösung, aber es ist sehr hilfreich. Offensichtlich stimmt etwas mit Flutter nicht. Es sieht so aus, als ob Google nicht genau weiß, was Apple erwartet, oder Apple nicht daran interessiert ist, dass Flutter reibungslos funktioniert ... :)
Ferran Maylinch
Übrigens habe ich gestern Flutter auf einem anderen Mac mit Mojave (meiner hat Catalina) ausprobiert und den gleichen Fehler erhalten.
Ferran Maylinch
Höchstwahrscheinlich hängt dies mit CodeSign oder Flutter selbst zusammen. Wir sollten eine Ausgabe eröffnen github.com/flutter/flutter/issues
Emin Guliev
Ja. Gute Idee. Lassen Sie mich wissen, ob Sie es tun, oder ich kann es selbst tun.
Ferran Maylinch
0

Versuchen Sie, über zu einem stabilen Kanal zu wechseln flutter channel stable, ihn auszuführen flutter upgradeund dann zum App-Projekt zu navigieren und auszuführenflutter run

Gioele Pannetto
quelle
Leider bekomme ich den gleichen Fehler. Ich habe sogar eine neue Flatter-App erstellt, nachdem ich zum stabilen Kanal gewechselt habe. Ich habe meine Frage aktualisiert, um zu zeigen, dass ich jetzt auf dem stabilen Kanal bin.
Ferran Maylinch
Ich habe auch die Ausgabe des Flatterlaufs hinzugefügt.
Ferran Maylinch
0

Nur um die App im Debug-Modus auszuführen, ist kein Apple-Konto erforderlich. 1) Öffnen Sie den xCode für dieses Projekt, wählen Sie das Gerät aus und führen Sie es aus.

Öffnen Sie den XCode dieses Projekts und überprüfen Sie die Build-Einstellungen, da der Pfad FLUTTER_ROOT korrekt ist. Wenn nicht, erstellen Sie die Flatterwurzel und geben Sie den Pfad an.

balaji ks
quelle
Ich habe eine korrekte FLUTTER_ROOT. Das ist nicht das Problem ... :(
Ferran Maylinch
0

Öffnen Sie den Xcode und klicken Sie auf Product -> Cleanoder ( CMD- Shift- K). Wenn dies nicht funktioniert hat, versuchen Sie Folgendes: https://macpaw.com/how-to/clear-xcode-cache

Wenn das auch nicht funktioniert, lass es mich wissen.

Blasanka
quelle
Es funktioniert nicht. Ich habe festgestellt, dass ich kein Podfile habe, also überprüfe ich Folgendes
Ferran Maylinch
0

Haben Sie diesen Link überprüft, über den Sie möglicherweise die gewünschte Ausgabe erhalten ? Https://github.com/flutter/flutter/issues/16507 . Lassen Sie mich wissen, ob es funktioniert. Möglicherweise handelt es sich um ein Signaturproblem. In diesem Beitrag erfahren Sie, was falsch läuft. Vielen Dank

Sagar Acharya
quelle
Ich habe kein Podfile, also überprüfe ich dies: stackoverflow.com/questions/51599686/… Wie auch immer, ich weiß nicht, welches Podfile ich brauche. Ich habe eine erstellt, erhalte aber immer noch den gleichen Fehler. Vielleicht brauche ich kein Podfile oder das Problem ist ein anderes.
Ferran Maylinch
0

Ok, einen Moment Zeit, um eine Antwort zu erstellen:

Basierend auf der Antwort von Subaharan Vel , Frage: Flutter Podfile- und Pods-Ordner, die nicht im ios-Verzeichnis erstellt wurden, und Antwort, die darauf hindeutet, dass beim Erstellen für iOS-Simulator Podfiles an einer falschen Stelle erstellt werden können (sie sollten automatisch direkt im iOS-Verzeichnis erstellt werden. Daher ist es wahrscheinlich, dass Ihr Podfile irgendwo dort vorhanden. Versuchen Sie es zu finden oder entfernen Sie einfach das gesamte ios-Verzeichnis, bereinigen Sie das Projekt und erstellen Sie es neu. Stellen Sie außerdem sicher, dass dies nicht der Fall ist. Erstellen Sie eine Pod-Datei zum Hinzufügen von iOS-Pods, bevor Sie Flutter-Plugins hinzufügen, und schließen Sie die Plugin-Pods niemals an das vorhandene Podfile .

Viel Glück, ich hoffe es wird dir helfen

Adam Tucholski
quelle
Es gibt Podfilenirgendwo. Ich renne find . -name Podfileund bekomme nichts. Ich habe das iosVerzeichnis entfernt, aber wie kann ich es jetzt neu erstellen? Wenn ich renne, flutter build iosbekomme ich den Fehler Application not configured for iOS.
Ferran Maylinch
@Ferran Maylinch Wiederholen Sie einfach alle Schritte von Surbahan Vel (erster Link) - er hat das ios-Verzeichnis entfernt und es wurde nach dem Reinigungsprojekt neu erstellt. Fügen Sie bei Bedarf die Poddatei manuell hinzu ( entfernen Sie von stackoverflow.com/a/53492243/7183675 unnötige Pods von dort, überprüfen Sie auch den zweiten Kommentar unter dieser Antwort). Als letztes Mittel kann es hilfreich sein, wenn Sie pubspec mindestens ein Paket hinzufügen, um Flutter zu zwingen, Podfile automatisch zu erstellen. Auch wenn dieses Paket nicht wirklich verwendet wird
Adam Tucholski
0

Keine ideale Lösung, aber das Folgende hat bei mir funktioniert.

  1. Aktualisieren Sie Ihr Gerät auf iOS 13.4 Beta.
  2. Führen Sie einen Flatterlauf durch
  3. Der Build sollte erfolgreich sein.
  4. Es wird der Fehler "Ihre Xcode-Version ist möglicherweise zu alt für Ihre iOS-Version" ausgegeben.
  5. Die Anwendung wird auf dem Gerät installiert. Hinweis: Die Anwendung wird nicht automatisch gestartet, wenn der Prozess beendet wird.
  6. Klicken Sie auf das Symbol für die installierte App auf Ihrem Gerät, um die App zu starten.

Im Debug-Fenster wird jedoch nichts angezeigt, da der Prozess nach dem Auslösen des Fehlers beendet wird. Es ist keine ideale Lösung, aber definitiv eine Problemumgehung, bis wir das nächste Xcode-Update erhalten. 

Dhruva Phulsundar
quelle