2016-06-21 18 views
3

Ich bin in der Mitte eines Proof-of-Concept-Tests von mir, benutze xcodebuild und xcrun, um eine .app auf meinen ios-Simulatoren zu erstellen und zu implementieren (oder sogar das .app-Verzeichnis an meinen endgültigen Client zu liefern).Befehlszeile erstellt und installiert iOS.app stürzt beim Booten im Simulator ab

Was auch immer, die Sache ist ich erfolgreich mit all den vielen notwendigen Schritten, um die App-Datei (naja, Verzeichnis) von Grund auf neu zu erstellen, aber dann bekomme ich einen App-Absturz, nachdem ich diese nächsten 2 Zeilen ausführen, insbesondere die zweite ein, wenn ich versuche zu laden und dann die .app auf den Simulator laufen:

xcrun simctl install booted $(PWD)/build/Debug-iphoneos/APP_NAME.app 
xcrun simctl launch booted somebundle.id.from.me <- CRASH 

Egal, was ich versuche, dass xcrun Befehl Ausbeuten dieser Fehler auf system.log:

Error Domain=FBSOpenApplicationErrorDomain Code=1 "(null)" 

Offenbar mein App wird auf dem Simulator installiert (ich habe es mehrmals zu crea gelöscht (eine neue Installation), es startet sogar (der Begrüßungsbildschirm wächst von dem Symbol, das auf dem Simulatordesktop erscheint), aber das erste, was ich bekomme, wenn ich erwarte, dass die App den Begrüßungsbildschirm passiert, ist der zuvor erwähnte Absturzleitungsfehler (im System .Logdatei).

Einige Leute sagen, ich könnte einige Phantom leere Variable in meinem Schemas Definitionsfeld herumschweben. Ich habe es überprüft und es ist nicht der Fall. Keine Variablen wie auch immer.

Einige andere Leute sagen, dass alte Versionen der App im Taskplaner des Simulators noch aktiv sind. Tatsächlich habe ich manchmal meine Aufgabe dort als eine alte Aufgabe aus der Vergangenheit gefunden, aber zweimal auf "Home" zu drücken, um zum Simulator-Task-Manager zu gehen, es zu töten und erneut versuchen, meine .app-Datei mit xcrun neu zu starten ist immer noch hier. Ich stoppe sogar alte Ausführungen derselben App, die von Xcode selbst gestartet wurde (mit der STOP-Taste), aber kein Glück.

So bin ich definitiv verloren. Ich kann meine zuletzt erstellte App nicht über die Befehlszeile auf den Simulator laden.

Es ist mit einem 9.3 (iPhone 4s) Simulator und mit einem 9.3 (iPhone 6plus) Simulator fehlgeschlagen. Meine XCode-Tools sind diejenigen, die in meinem XCode 7.3.1 enthalten sind. Ich benutze "El Capitán".

Ich kann an nichts anderes denken.

Ich möchte meine. APP über "Befehlszeilen-Tools" hochladen und ausführen. Ich hoffe, es ist irgendwie möglich, oder zumindest scheint es, ich bin wirklich nah am Erfolg.

Irgendwelche anderen Hinweise, die ich vielleicht übersehen habe?

Grüße und danke.

Antwort

2

Ein weiterer Fall von erfolgreich beantwortet Selbst Frage :)

Kurzversion: Ich war der Bau einer „echten ios Gerät“ kompilierte Version und dann auf den Simulator zu installieren versuchen. Das Ändern der Parameter xcrun und xcodebuild (Architektur und Pfad) hat den Zweck erfüllt und nun funktioniert die App wie ein Zauber, wenn sie vom Simulator ausgeführt wird.


Lange Version: Was war das Problem? Die Architekturen und Pfade, die ich (fälschlicherweise) beim Aufruf von xcodebuild ausgewählt habe Einer der Parameter zum Definieren meiner Kompilierungsarchitektur war implizit "ARM" (-sdk iphoneos), aber die Architektur der Simulator-Laufzeit-Engine ist i386 (wir sind in ein MAC). Wie erwartet, sobald die "real-device-compiled-.app" auf dem Simulator installiert wurde, würde der Simulator selbst nicht verstehen, wie man ihn startet und dann kommt es zum kryptischen Absturz.

Was gab mir den Schlüssel? 2 andere Fragen habe ich woanders in Stack Overflow gefunden. Geben Sie für zusätzliche Informationen hier:

Apps manually installed in simulator crashes upon load

xcodebuild: simulator or device?

Was führen mich die anderen zwei Threads zu überprüfen? Eine .log-Datei habe ich woanders als die Standard-und langweilig /var/log/system.log

gefunden RANT: Es gibt ein Problem mit den vielen .log-Dateien, die Sie auf einem modernen MAC finden können !!/GESCHIMPFE

im Prozess der Entdeckung, die Datei .log wurde die nützlich für mich, ich diese hier entdecken auch immer,:

  • $ HOME/Library/CoreSimulator/CoreSimulator.log (nicht wirklich nützlich für mein Problem, jedenfalls).
  • $ HOME/Library/CoreSimulator/[UGLY_HASH_CORRESPONDING_TO_THE_SIMULATOR_YOU_ARE_USING] /system.log

Das letzte der gut war. Am Ende dieser .log-Datei habe ich zusätzliche Informationen gefunden, als ich versuchte, die "schlecht gebaute .app" -Datei zu booten. Das Protokoll sagte etwas wie folgt aus:

Program specified by service does not contain one of the requested architectures 

Und dann das Wort „Architekturen“ gab mir den Hinweis, mein Problem zu lösen und was zu suchen.


Und das ist es. Für den Fall, dass sich jemand in der gleichen Situation in der Zukunft findet, hoffe ich, dass alle diese Informationen, die ich oben geschrieben habe, nützlich sein werden.

Grüße.


PS: Wenn Sie nicht finden können, was der Ordner ist, wo Ihr mühsam Simulator (und der damit verbundenen log-Datei) leben, (es kann buchstäblich Dutzende von installierten Simulatoren sein), Sie können mit aN alcatraz PlugIn Called ̶X̶C̶o̶d̶e̶W̶a̶y̶.̶ ONCE Dieses Plugin installiert ist und richtig läuft, ̶ Sie können prüfen, den Pfad der ̶i̶O̶S̶8̶ + ̶ Simulators Auf diese von Xcode: ̶

Xcode ̶-̶> ̶ Fenster ̶-̶> ̶ ̶X̶C̶o̶d̶e̶W̶a̶y̶ ̶-̶> ̶ Gehe zum ̶i̶O̶S̶8̶ + ̶ Simulators Dateimanager öffnet, ̶ und es wird Ihr .log ̶: ̶) ̶ ̶

Sie können die Kommentare unter diesem hier lesen und sehen die kurze und richtige Art und Weise, es zu tun :)

+1

Oder Sie können einfach 'xcrun Simctl Liste' ausführen, um die UDID herauszufinden. –

+1

Oder Sie können auch die System.log in der Konsole von Simulator.app-Menüs öffnen ... –

1

xcrun simctl launch booted somebundle.id.from.me stürzt nicht ab. Es wird Ihnen korrekt ein Fehler gemeldet, der angibt, dass der Start fehlgeschlagen ist.

Fehler Domain = FBSOpenApplicationErrorDomain Code = 1 bedeutet, dass beim Starten der Anwendung etwas schief gelaufen ist.Ja, Sie haben das wahrscheinlich schon gewusst, aber genauer gesagt deutet Code 1 eher auf einen allgemeinen Fehler als auf etwas hin, mit dem ich das genaue Problem lokalisieren kann. 1 bedeutet "dieser Fehler ist etwas falsch, aber wir haben keinen besseren Fehlercode, um es zu verwenden"

Für weitere relevante Informationen über was schief läuft, schlage ich vor, dass Sie die Simulator system.log während der Start. Deine Frage zeigt an, dass du in system.log nachgesehen hast, aber es hört sich so an, als ob du dir den Host system.log angesehen hast, der dir hier nicht wirklich nützlich ist. ZB:

Terminal 1 $ tail -F ~/Library/Logs/CoreSimulator/[UDID]/system.log 
Terminal 2 $ xcrun simctl launch booted somebundle.id.from.me 

Dann gehen Sie zurück zu Terminal 1 und brechen Sie nach dem Fehler. Durchforsten Sie diese Protokolle nach allem, was als potenziell verwandt erscheint.

Ich vermute, dass Ihr handgerolltes App-Paket fehlerhaft ist und entsprechende Details wahrscheinlich in der system.log des Geräts vorhanden sind. Wenn dies der Fall ist, wäre es sehr hilfreich, ein Radar-Feld (http://bugreport.apple.com) mit Ihrem Beispiel zu haben, so dass die Fehlermeldung entsprechend aktualisiert werden könnte, um sie an den Benutzer anstatt an "(null)" weiterzuleiten.

+0

Meine Antwort war so lange, dass Sie zuerst Ihre. Beides stimmt jedenfalls. Danke für die Hinweise auch über diesen Thread :) – Isaac