wake-up-neo.com

Was ist die Ursache für dyld`dyld_fatal_error, eine inkompatible API unter iOS?

Ich verschiebe einen Teil meiner Projekte auf iOS 5/ARC. Eines der ältesten Projekte (iOS 4.2, armv6 für iPod Touch 2g) gibt mir:

dyld`dyld_fatal_error:
0x8feb1070:  int3   
0x8feb1071:  nop    

Kurz nach dem Startbild, aber vor dem Start. Muss eine Lib/Code-Aktualisierung auf iOS 5 sein, aber welche? Gibt es eine bessere Methode als raten?

18
mamcx

Ich bin auf dieses Problem gestoßen und habe versucht, dieses Projekt unter Verwendung von Xcode4.3.2 mit SDK iOS5.1 zu reproduzieren. Das Problem bestand darin, dass die Standardprojektvorlage unter Xcode4.3.2 für iOS5 konfiguriert wurde. Sie enthält einige Funktionen, die in früheren iOS-Versionen nicht unterstützt wurden. In meinem Fall wurde das GLKit Framework eingespielt und auf meinem iPhone3G mit iOS4.2 nicht unterstützt. Der Fehler, den ich bekommen habe, war genau wie bei Ihnen:

dyld`dyld_fatal_error:
0x2fe01080:  trap   
0x2fe01084:  mov    r0, r0

Bei genauerer Betrachtung der Konsolenausgabe sehen Sie, warum die App abstürzt:

dyld: Library not loaded: /System/Library/Frameworks/GLKit.framework/GLKit
Referenced from: /var/mobile/Applications/A60A53B1-F87D-467D-BB0B-82C603049202/HiJackInTheBox.app/HiJackInTheBox
  Reason: image not found
(lldb) 

Der Fehler führte dazu, dass das GLKit-Framework auf dem Ziel, auf dem die App installiert wurde, nicht in iOS gefunden wurde. Das Framework wurde in den Build unter Project-> BuildPhases-> LinkBinaryWithLibraries gezogen.

Um das Problem zu beheben, musste ich das GLKit-Framework und den gesamten Code, der darauf verweist, entfernen. Dann war der Build erfolgreich und wurde auf dem Zielgerät ausgeführt. Hoffe das hilft!

25
grundyoso

Wenn Sie zur Konsolenausgabe gehen, wird ein Fehler angezeigt, der angibt, welches Framework im Gerät fehlt und das Problem verursacht (wie grundyoso in seiner Antwort sagte).

Um dies zu beheben, können Sie zur Registerkarte General des Ziels gehen und das fehlende Framework im Abschnitt Embedded Binaries hinzufügen.

Dadurch wird das Framework in die App kopiert, sodass es auf keinem Gerät übersehen wird.

5
Roberto

Ich habe das gleiche Problem mit Reachability.framework. Es funktionierte gut für das iPhone 5, aber während derselbe Code für das iPhone 7S Plus ausgeführt wird, wird der Fehler angezeigt.

Die Lösung für dieses Problem ist: 1. Gehen Sie zu Allgemein -> Eingebettete Binärdateien. 2. Fügen Sie dasselbe Framework hinzu (in meinem Fall Reachability.framework). 3. Fügen Sie dann libc ++. Tbd in Linked Frameworks and Libraries hinzu.

Hoffe es funktioniert für dich.

2
Virendra Kumar

Ich hatte das gleiche Problem und dies geschah, als ich die App auf meinem iPhone 6s ausführte und sie zuvor funktionierte.

Gehen Sie einfach zu Produkt -> Reinigen und starten Sie es erneut ...

Ich hoffe das hilft.

2
Surafel Tensai

Ich hatte das gleiche Problem mit meinem xCode 4.3 (cocos3d-basiert) Projekt, als ich es auf einem iPhone 3GS mit iOS 4.2 getestet habe.

Gehen Sie zu Ihren Projekteinstellungen und aktualisieren Sie:
Ziel (s) | Zusammenfassung Verknüpfte Frameworks und Bibliotheken | GLKit.framework to Optional
(statt Erforderlich ) und dann erneut testen.

Nachdem ich diese Änderung vorgenommen habe, scheint alles für mich in Ordnung zu sein.

Viel Glück!

1
Logicopolis

Wenn Sie Carthage verwenden, haben Sie möglicherweise vergessen, ein Framework zu "Copy Frameworks" hinzuzufügen. Gehen Sie zu Ziel -> Build-Phasen -> Copy Frameworks -> Fügen Sie das Framework zur Liste hinzu.

0
Ruud Visser