2012-04-26 6 views
18

Moveré parte de mis proyectos a iOS 5/ARC. Uno de los proyectos más antigua (IOS 4.2, ARMv6 para el apoyo iPod Touch 2g) está dando a mí:¿Cuál es la causa de dyld`dyld_fatal_error, una API incompatible en iOS?

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

Justo después de la imagen lanzamiento, pero antes de ir a principal. Debe ser algún código/lib actualizado a iOS 5, pero ¿cuál? ¿Es posible usar un método mejor que adivinar?

+0

http://stackoverflow.com/questions/24878274/getting-dyld-fatal-error-after-updating-to-xcode-6-beta-4-using-swift/30779871#30779871 –

Respuesta

24

Corrí este problema tratando de reproducir this project usando Xcode4.3.2 con SDK iOS5.1. El problema era que la plantilla de proyecto estándar en Xcode4.3.2 configura para iOS5, que tiene algunas características que las versiones anteriores de iOS no son compatibles. En mi caso, el Framework GLKit estaba siendo retirado y no era compatible con mi iPhone3G con iOS4.2. El error que estaba recibiendo era como la suya:

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

Luego de la revisión más cerca de la salida de la consola se puede ver lo que está causando el cierre de la aplicación:

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) 

el error significaba que el marco GLKit no era encontrado en el residente de iOS en el destino donde se instaló la aplicación. El marco se estaba incorporando a la construcción en Proyecto-> Fases de construcción-> LinkBinaryWithLibraries.

Para corregir el problema, necesitaba eliminar el marco GLKit y todos los códigos que hacen referencia al mismo. Luego, la compilación tuvo éxito y se ejecutó en el dispositivo de destino. ¡Espero que esto ayude!

+0

Sí, confirmo esto sucedió cuando una lib/call incompatible con IOS5 está en uso en un dispositivo IOS 4 – mamcx

+0

¿Cómo podría ver el mensaje de Biblioteca no cargada? Estoy recibiendo el mismo error pero no puedo encontrar el mensaje legible. – Burak

+0

Estaba en la ventana Salida de la consola. Puede filtrar por la cadena "dyld" y ver si eso ayuda a localizarla. – grundyoso

1

Tuve el mismo problema con mi proyecto xCode 4.3 (basado en cocos3d) cuando probé en un iPhone 3GS con iOS 4.2.

Ir a la configuración y actualización del proyecto:
Objetivo (s) | Resumen | Marcos vinculados y bibliotecas | GLKit.framework a Opcional
(en lugar de Obligatorio) y luego vuelva a probar.

Después de hacer este cambio todo parece estar bien para mí ahora.

¡Buena suerte!

-1

Parece que su objetivo principal es vincular a XCTest.framework pero ha fallado.

1) Ir a la configuración del proyecto -> 2) Ir al destino principal de la aplicación -> otras banderas enlazadoras 3) eliminar '-framework XCTest' 4) asegurarse de que el campo 'otras banderas enlazadoras' aún contenga '-framework XCTest'

2) revise Images.xcassets, y otros recursos, en el inspector de archivos (panel derecho), mire 'membresía objetivo', verifique si selecciona el objetivo Tests.

3) intente buscar XCTest en su proyecto y vea lo que ha configurado.

O

tratar de eliminar pruebas

2

que tenía el mismo problema y esto ocurre cuando estaba corriendo la aplicación en mi iPhone 6s, y que estaba trabajando antes ..

sólo tiene que ir a la del producto -> Limpia y vuelve a ejecutar de nuevo ...

espero que esto ayude.

5

Si va a la salida de consola , verá un error que indica qué marco falta en el dispositivo y está causando el problema (como grundyoso dijo en su respuesta).

Así que con el fin de solucionar este problema se puede ir a la pestaña General del objetivo y añadir el marco faltante en los binarios incrustados sección.

Esto copiará el marco a la aplicación para que nunca se pierda en ningún dispositivo.

+0

Gracias ... Esto funcionó para mí. – minhazur

0

Si está utilizando Cartago, es posible que haya olvidado agregar un marco a "Copiar marcos" Ir al objetivo -> Fases de compilación -> Copiar marcos -> Agregar el marco a la lista.

1

Tengo el mismo problema con Reachability.framework. Funcionó bien para iPhone 5, pero mientras ejecuta el mismo código para iPhone 7S Plus, muestra el error.

La solución para este problema es: 1. Vaya a General -> Binarios incrustados. 2. Agregue el mismo marco (en mi caso Reachability.framework) 3. Luego, agregue libC++. Tbd en Frameworks vinculados y bibliotecas.

Espero que te sirva.

Cuestiones relacionadas