Estoy tratando de crear un marco OS X básico, en este momento solo tengo un marco de prueba creado: TestMacFramework.framework
y estoy tratando de importarlo en un nuevo proyecto de aplicación OS X.
Creé el archivo .framework y lo importé al nuevo proyecto. El marco parece vincularse bien y puedo hacer referencia al archivo de encabezado público que agregué a la sección de fases de construcción del marco.
Sin embargo, cuando intento ejecutar la aplicación contenedor, aparece el siguiente error:
dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
Reason: image not found
Después de buscar un poco en Google, me di cuenta de que necesitaba agregar una Copy Files
sección a las fases de compilación de la aplicación de mi contenedor, así que hice esto y lo configuré así ...
Sin embargo, todavía recibo el error de tiempo de ejecución. Obviamente estoy haciendo algo mal aquí, pero el recurso de la biblioteca de desarrolladores de Apple para este hace referencia a Xcode 2, ¡así que no es muy útil!
¿Qué me he perdido?
ACTUALIZAR:
Puedo ver en el registro de compilación que mi TestMacFramework.framework
se está copiando en el directorio .app contents / frameworks, pero no se está instalando en el directorio Library / Frameworks en el HD
ACTUALIZACIÓN 2:
La compilación se vincula correctamente si copio manualmente TestMacFramework.framework
en el Library/Frameworks
directorio
fuente
otool -L
te dice acerca de dónde la aplicación espera encontrar el marco?/Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework (compatibility version 1.0.0, current version 1.0.0)
Respuestas:
[Xcode 11+]
Lo único que debe hacer es agregar el marco a la
General->Frameworks, Libraries And Embedded Content
sección en laGeneral
pestaña del objetivo de su aplicación.Asegúrese de seleccionar la opción 'Incrustar y firmar'.
[Xcode v6 -> Xcode v10]
Lo único que debe hacer es agregar el marco a la
Embedded binaries
sección en laGeneral
pestaña del objetivo de su aplicación.fuente
Embedded binaries
sección en mi proyecto macOS. Que pasaAsí que logré hacerlo funcionar, es bastante simple cuando tienes las instrucciones correctas. Lo que estaba buscando era un marco 'privado' que viva en el paquete de aplicaciones en lugar de estar escrito en la carpeta de la biblioteca del sistema.
Construyendo el marco
Incluyendo el marco
fuente
Para mí fue bastante simple, acabo de agregar mi marco a mis binarios incrustados en los objetivos de la aplicación
fuente
Las opciones anteriores no me son posibles de incluir. Lo resolví especificando la ruta de búsqueda Runpath
Esto está en la pestaña ' Configuración de compilación '. En la sección ' Vinculación '. Cambie ' Rutas de búsqueda de Runpath ' a
$(inherited) @executable_path/Frameworks
fuente
Me encontré con el mismo problema, pero la solución aceptada no funcionó para mí. En cambio, la solución fue modificar el nombre de instalación del marco.
El error en la publicación original es:
Tenga en cuenta la primera ruta después de la biblioteca no cargada . El marco se está cargando desde una ruta absoluta. Esta ruta proviene del nombre de instalación del marco (a veces llamado rpath), que puede examinarse usando:
Cuando se incrusta un marco en una aplicación, esta ruta debe ser relativa y de esta forma: @ rpath / MyFramework.framework / MyFramework . Si el nombre de instalación de su marco es una ruta absoluta, es posible que no se cargue en tiempo de ejecución y se generará un error similar al anterior.
La solución es modificar el nombre de la instalación:
Con este cambio ya no obtengo el error
fuente
Eliminar datos derivados me los guardó
fuente
pod install
funcionó.Ninguno de estos problemas me resolvió esto. El problema al final fue bastante fácil. Parece que es un error bastante importante de Xcode que he registrado el problema y lo solucioné con el error de Apple: 29820370. Si tiene problemas (ya que parece que hay varias páginas de problemas similares a este), sería genial si pudiera plantear un error en el reportero de errores: https://bugreport.apple.com/ y haga referencia al error que planteé para ganar visibilidad. Quiero hacer que Xcode vuelva al placer que era antes, y esto es algo que estoy seguro de que Xcode debería haberse solucionado.
Aquí está la solución: 1. Llavero abierto: vaya al Certificado de desarrollador mundial de Apple. 2. Haga doble clic en él. 3. Cambie el nivel de permiso de "siempre confíe" para usar los valores predeterminados del sistema. 4. Guarde y ciérrelo. 5. Reinicie Xcode, limpie y construya su proyecto y ya no estará.
Captura de pantalla a continuación de la configuración correcta: ¡ Espero que esto ayude!
fuente
en Xcode 11 agregar marco en
General->Frameworks, Libraries And Embedded Content
después de agregar, asegúrese de seleccionar la
Embed & Sign
opciónfuente
Cuando arrastra un marco personalizado a un proyecto en Xcode 10.1 , se supone que el marco es un marco de sistema y coloca el marco en la sección "Enlace binario con bibliotecas" de "Fases de compilación" debajo de su objetivo.
Los marcos del sistema ya están en el dispositivo, por lo que no se copia en el dispositivo y, por lo tanto, no se puede ejecutar en tiempo de ejecución, por lo que KABOOM (bloqueo en __abort_with_payload y error de desinformación: "Motivo: imagen no encontrada"). Esto se debe a que el código marco no se copia en el dispositivo ...
En realidad, para que Xcode vincule el marco personalizado y se asegure de que se copie junto con su código en el dispositivo iOS (real o simulador), el marco personalizado debe moverse a "Copiar recursos del paquete". Esto finalmente empaqueta el marco junto con el código ejecutable para que estén disponibles en el dispositivo juntos.
Para agregar un marco personalizado a un proyecto y evitar el bloqueo de Apple:
El marco personalizado, por lo tanto, se copia junto con su código en su dispositivo de destino y está disponible en tiempo de ejecución.
[editorial: pensaría que Xcode sería lo suficientemente inteligente como para descubrir la diferencia entre uno de sus marcos de sistema que no necesita copiarse en el dispositivo y un marco personalizado que está, oh no sé, en la jerarquía del directorio raíz del proyecto ... 🙄]
fuente
Debería haber un 'Ejecutar script' en 'Construir fases' con esto: '/ usr / local / bin / carthage copy-frameworks'
En los 'Archivos de entrada' de ese 'Ejecutar script', debe agregar la ruta a sus bibliotecas. Me gusta esto:
fuente
Si restablece accidentalmente su llavero, esto puede ocurrir debido a la falta de certificados de Apple en el llavero. Seguí esto para resolver mi problema.
Tuve el mismo problema y pude solucionarlo volviendo a descargar WWDR (Autoridad de Certificación de Relaciones con Desarrolladores de Apple en todo el mundo). Descargue desde aquí: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
fuente
Si está utilizando Xcode 11 , asegúrese de tener el marco agregado en Frameworks, Bibliotecas e Incrustar contenido en Configuración de destino - General. Cambie el estado de Incrustar de - 'No incrustar' a 'Incrustar y firmar'
fuente
Lo que lo resolvió para mí fue cambiar
abstract_target
altarget
objetivo principal en mi Podfile. Lo había configurado previamenteabstract_target
y esto causó el error descrito. Ahora funciona como un encantofuente
Para Xcode 8, algunos productos obsoletos se eliminarán de la carpeta de datos derivados; consulte esta solución .
Apple: en macOS 10.12 y posteriores, Xcode limpia datos derivados obsoletos, encabezados precompilados y cachés de módulos. (23282174)
El sistema de compilación Xcode admite la eliminación de archivos obsoletos de algunos tipos de artefactos de compilación que se produjeron en una compilación anterior, pero que desde entonces se han eliminado del proyecto.
Basado en el pensamiento del autor, encontré este registro de compilación de mi caso.
Después de crear una nueva fase de copia de archivos y copiar el marco obsoleto de destino en destino de Frameworks , el registro de eliminación anterior desaparece después de la reconstrucción.
Solo aclare mi situación y razón, espero que sea útil para alguien.
fuente
¡Para mí esta fue la solución, después de muchas horas de búsqueda!
Por alguna razón, bien en el desarrollo de un Marco personalizado Swift 2.3, Xcode 8 había eliminado la
DYLIB_INSTALL_NAME_BASE
configuración delproject.pbxproj
archivo. Un pequeño paseo hacia elBuild Settings / Dynamic Library Install Name Base
entorno de vuelta a@rpath
arreglarlo.(de https://forums.developer.apple.com/thread/4687 )
fuente
Descubrí que este problema solo estaba relacionado con la firma del código y los certificados, no con el código en sí. Para verificar esto, cree la aplicación básica de vista única e intente ejecutarla sin ningún cambio en su dispositivo. Si ve el mismo tipo de error, esto muestra que su código está bien. Como yo, encontrará que sus certificados no son válidos. Descargue todo nuevamente y repare los vencidos. Luego, cuando obtenga la aplicación básica para no informar el error, intente su aplicación nuevamente después de salir de Xcode y tal vez reiniciar su mac por si acaso. Eso finalmente puso fin a esta pesadilla. Lo más probable es que esto no tenga nada que ver con su código, especialmente si recibe un mensaje Build Successful cuando intenta ejecutarlo. FYI
fuente
Tengo el problema al intentar Xcode 9 beta y volver a Xcode 8. Una simple limpieza en el objetivo resolvió el problema.
fuente
Tuve el mismo problema por una razón diferente. He creado una nueva configuración para depurar y liberar (en PROYECTO -> pestaña Información -> Configuración). Y tuve que cambiar mi script de shell de frameworks de pod (Pods- "appName" -frameworks.sh, en Targets Support Files) para que funcione.
[Xcode 9]
fuente
Lo único que funcionó para mí:
Destino> Fases de compilación> [CP] Incrustar marcos de pods Desmarque "Mostrar variables de entorno en el registro de compilación" y "Ejecutar script solo al instalar"
fuente
Intenté muchas soluciones, pero lo que funcionó para mí fue eliminar un objetivo faltante que figura en la pestaña de compilación del esquema de compilación. Puede acceder abriendo la ventana de edición del esquema actual.
Editar: Mi objetivo de prueba de IU no funcionaba tan bien, y la solución que encontré fue eliminarlo y generarlo nuevamente.
fuente
abra xcode -> general -> Binarios incrustados -> agregue QBImagepicker.framework y RSKImageCropper -> proyecto limpio
simplemente agregue QBImagePicker.framework y RSKImageCropper.framework en los binarios incrustados que me funcionaron
fuente
Creo que no hay una forma fija de resolver este problema, ya que podría deberse a diferentes razones. También tuve este problema la semana pasada, no sé cuándo y exactamente qué causa este problema, solo cuando lo ejecuto en un simulador con Xcode o trato de instalarlo en el teléfono, luego informa ese tipo de error, pero cuando ejecutarlo con react-native run-ios con terminal, no hay problema.
Revisé todas las formas publicadas en Internet, como renovar el certificado, cambiar la configuración en Xcode (todas las formas mencionadas anteriormente), en realidad, todas las configuraciones en Xcode ya estaban configuradas como se solicitó anteriormente, ninguna de las formas funciona para mí. Hasta esta mañana, cuando elimino las cápsulas y reinstalo, el error finalmente desaparecerá después de una semana. Si también está usando cocoapod y luego el error se mostró sin ningún motivo específico, tal vez pueda intentarlo a mi manera.
fuente
Experimenté ese problema solo cuando lo ejecuté en un dispositivo real (iPhone SE). En el proyecto del simulador funcionó como se esperaba.
Intenté todas las correcciones desde este mismo hilo y desde aquí . Ninguno de esos funcionó para mí.
Para mí, el problema se resolvió después de reiniciar el iPhone (sic!).
Yo hice:
Y finalmente funciona. :)
Si falla cualquier otra solución, no olvide probarla.
fuente
Xcode 11: Fases de construcción -> Insertar marcos
fuente