Aplicación de iOS con framework crashed on device, dyld: Biblioteca no cargada, Xcode 6 Beta

Este locking ha sido un problema de locking, básicamente he utilizado los siguientes pasos para reproducir el problema:

  • Crea un proyecto Marco Cocoa Touch
  • Agregue un file rápido y una class de perro
  • Construir marco para dispositivo
  • Cree una aplicación de vista única en Swift
  • Importar marco al proyecto de la aplicación
  • Instale una class rápida desde el marco en ViewController
  • Crear y ejecutar una aplicación en el dispositivo

La aplicación se bloqueó inmediatamente al iniciar, aquí está el logging de la console:

dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03 Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App Reason: image not found 

He intentado build en iOS 7.1 y 8.0 dispositivos, ambos tienen el mismo locking. Sin embargo, puedo comstackr una aplicación y ejecutarla en un simulador. También estoy consciente de que puedo cambiar el marco de Requinetworking to Optional en Link Binary With Libraries , pero no resolvió por completo el problema, la aplicación se bloqueó cuando creo una instancia de Dog . El comportamiento es diferente en el dispositivo y el simulador, sospecho que no podemos distribuir el marco para el dispositivo con la versión beta de Xcode. ¿Alguien puede arrojar luz sobre esto?

En la pestaña General del objective, hay un campo Binarios embeddeds . Cuando agrega el marco allí se resuelve el locking.

La reference está aquí en los foros de desarrolladores de Apple.

Para iOS mayor o igual a 8

En la pestaña General del objective, en la sección de Binarios integrados, agregue el marco. Esto copyrá el marco en el comstackdo para que se pueda vincular en el time de ejecución.

introduzca la descripción de la imagen aquí

¿Por qué está pasando esto? : porque el marco al que se está vinculando se comstack como un marco vinculado dinámicamente y, por lo tanto, está vinculado a en el time de ejecución.

Nota: Incrustar frameworks personalizados solo es compatible con iOS> 8 y, por lo tanto, la solución alternativa que funciona con versiones anteriores de iOS sigue.

Para iOS less de 8

Si tiene influencia en este marco (tiene acceso al código fuente / process de compilation), puede cambiar este marco para que esté vinculado estáticamente en lugar de estar vinculado dinámicamente. Esto hará que el código se incluya en su aplicación comstackda en lugar de enlazarse con el time de ejecución y, por lo tanto, el marco no tendrá que incrustarse.

Cómo: En la pestaña Configuración de compilation del marco, en la sección Vinculación, cambie el Tipo Mach-O a Biblioteca estática. Ahora no debería necesitar include el marco en binarys embeddeds.

Marco estático

Inclusión de elementos: para include elementos tales como imágenes, audio o files xib / nib, recomiendo crear un package (esencialmente un directory, más información aquí bit.ly/ios_bundle) y luego cargar los activos del package usando NSBundle.

En primer lugar, intente comstackr después de Comando + Opción + Mayús + K. Si sigue fallando, realice los siguientes pasos.

Si alguien se enfrenta a este error en Xcode 8, cambie su estado de marco a Opcional en lugar de Requerido en la pestaña General de su objective.

introduzca la descripción de la imagen aquí

Creé un marco usando Swift3 / Xcode 8.1 y lo estaba consumiendo en un proyecto Objective-C / Xcode 8.1. Para solucionar este problema, tuve que habilitar la opción Always Embed Swift Standard Libraries en Build Options .

Eche un vistazo a esta captura de pantalla:

introduzca la descripción de la imagen aquí

¡Espero que ayude!

Recibí este mismo error al intentar agregar manualmente mi marco creado en mi proyecto. Simplemente arrastrar el marco a su proyecto no será lo suficientemente bueno. Eso es como estar en el mismo estadio pero no poder encontrar a tus hijos. Me tomó algo de testing y error para que funcione correctamente pero siguiendo estos pasos lo hice por mí.

1) Crea tu marco

  • Desarrolla tu framework.
  • Una vez que se complete su desarrollo, COMMAND + B buildá su marco y se asegurará de que reciba "Build Successed".

introduzca la descripción de la imagen aquí

2) Accede a tu framework

  • Una vez que su proyecto marco se compile con éxito, estará listo para que acceda a su carpeta Products en su proyecto.

introduzca la descripción de la imagen aquí

  • Haga clic derecho en su .framework y select "Mostrar en Finder".

introduzca la descripción de la imagen aquí

3) Coloque el marco en su proyecto

  • Arrastre y suelte el .framework desde la window de su Finder hasta la carpeta "Framework" de su proyecto de aplicación.

introduzca la descripción de la imagen aquí

4) Configurar proyecto de aplicación para framework

  • Selecciona el nivel superior en tu proyecto

introduzca la descripción de la imagen aquí

  • Elige tu objective

introduzca la descripción de la imagen aquí

  • Vaya a "Crear fases", luego "Enlace binary con bibliotecas", y asegúrese de que su marco esté incluido con la opción seleccionada .

introduzca la descripción de la imagen aquí

  • Todavía en "Construir fases", vaya a la esquina superior izquierda y select el button + . En el menu desplegable, select "Fase de nuevos files de copy".

introduzca la descripción de la imagen aquí

  • Desplácese hacia abajo hasta la nueva sección "Copiar files" y asegúrese de configurar Destination en "Marcos". Deje el subpath vacío. Luego, click el button + en la parte inferior izquierda.

introduzca la descripción de la imagen aquí

  • Se le presentará la jerarquía de su proyecto. Desplácese hacia abajo hasta la carpeta "Frameworks" en la que agregó el framework en el paso 3, o búsquelo en la barra de búsqueda en la parte superior. Seleccione su marco y click "Agregar".

introduzca la descripción de la imagen aquí

  • Asegúrese de que su marco esté incluido con "Código de inicio de session en copy" seleccionado.

introduzca la descripción de la imagen aquí

5) Limpia, luego ejecuta tu proyecto

  • COMMAND + SHIFT + K
  • COMMAND + R

Tuve que (además de lo mencionado aquí) agregar la siguiente línea a las routes de búsqueda de Runpath en la pestaña Configuración de compilation :
@executable_path/Frameworks

introduzca la descripción de la imagen aquí

Debe agregar el marco a una nueva Fase de compilation de files de copy para asegurarse de que el marco se copy en el package de aplicaciones en time de ejecución.

Consulte Cómo agregar una 'Fase de compilation de files de copy' a mi Objetivo para get más información.

Apple Docs oficiales: https://developer.apple.com/library/mac/recipes/xcode_help-project_editor/Articles/CreatingaCopyFilesBuildPhase.html

Tengo el mismo tipo de problema en la versión de iOS 9.x

  PROBLEMA ES: La aplicación se bloquea tan pronto como abro la aplicación con el siguiente error.

dyld: la biblioteca no está cargada: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Referenciada desde: /var/containers/Bundle/Application/######/TestApp.app/TestApp Motivo: image no encontrada

UserNotifications.framework este problema cambiando Requinetworking a Optional en Linked Frameworks and Libraries para el marco UserNotifications.framework .

Mi entorno: Cocos2d 2.0, Box2d, Objective C

Además de hacer las otras respuestas anteriores, finalmente fui a la pestaña General e hice WatchKit Opcional.

Target Frameworks y bibliotecas generales Watchkit.framework Opcional

En mi caso, la solución fue eliminar el marco comstackdo de Embedded Binaries, que era un proyecto independiente en el espacio de trabajo, limpiarlo y rebuildlo, y finalmente volver a agregarlo a Embedded Binaries.

Si está utilizando un marco de trabajo de terceros y usa Cocoapods como su administrador de dependencies, intente hacer una pod install para actualizar sus pods.

Este locking se estaba produciendo en una biblioteca de terceros que estaba usando, así que me alegro de que la solución anterior funcionó para mí, ¡espero que funcione para usted!

Tuve el mismo problema. Intenté build mi proyecto con un iPhone que nunca antes había usado y no agregué un nuevo marco. Para mí, la limpieza funcionó bien ( Mayús + Comando + K ). Quizás sea porque uso la beta 5 de Xcode 7 y un iPhone 6 con iOS 9 Beta, pero funcionó.

Sorprendentemente, no todas las piezas necesarias están documentadas aquí, al less para Xcode 8.

Mi caso fue un marco personalizado como parte del mismo espacio de trabajo. Resulta que se estaba construyendo incorrectamente. Basado en la última respuesta de jeremyhu a este hilo:

https://forums.developer.apple.com/thread/4687

Tuve que configurar Dynamic Library Install Name Base ( DYLIB_INSTALL_NAME_BASE ) en Build Settings de Build Settings del Framework y luego rebuildlo. Se configuró incorrectamente en $(LOCAL_LIBRARY_DIR) y tuve que cambiarlo a @rpath .

Por lo tanto, en la etapa de procesamiento del enlace, estaba orderando a la aplicación host que la cargue dinámicamente en time de ejecución desde /Library/Frameworks/fw.Framework/fw (como en la raíz del sistema de files) en lugar de la ruta de acceso a App /Frameworks/fw.Framework/fw

Con respecto a todas las demás configuraciones: tiene que estar en 3 lugares en Build Phases , pero todas están configuradas a la vez cuando lo agrega a la configuration de Embedded Binaries de la pestaña General de la aplicación de alojamiento.

No tuve que configurar una fase extra de Copy Files , que parece intuitivamente networkingundante con respecto a la etapa de inserción de todos modos. Al verificar el final de la transcripción de compilation, podemos asegurar que eso no es necesario.

 PBXCp /Users/xyz/Library/Developer/Xcode/DerivedData/MyApp-cbcnqafhywqkjufwsvbzckecmjjs/Build/Products/Debug-iphoneos/MyFramework.framework 

[Se eliminaron muchas líneas detalladas, pero está claro en la transcripción simplificada en la interfaz de usuario de Xcode.]

Todavía no tengo idea de por qué Xcode establece el valor DYLIB_INSTALL_NAME_BASE incorrectamente en mí.

En caso de que alguien todavía experimente este problema, a pesar de seguir todos los pasos descritos en las muchas otras respuestas, es posible que deba revocar y volver a crear su certificate de firma de código , según lo siguiente:

https://developer.apple.com/library/ios/qa/qa1886/_index.html

Para aquellos que la solución no funcionó, intente actualizar el sistema operativo a Yosemite. Funcionó para mí!