Si está utilizando marcos personalizados, debe colocarlo dentro de la sección "Binarios integrados" ubicada en el proyecto Xcode en la pestaña Destino / General.
Tengo un marco personalizado y aparece en "Binarios integrados" en el proyecto Xcode en Destino> General. Sigo teniendo este problema cuando intento ejecutar mis pruebas unitarias. Recientemente actualicé las partes de Swift de mi código a Swift 3 (de 2). Si eso ayuda ...
Mario A Guzman
@MarioAGuzman ¿Cómo lo arreglaste? También me enfrento al problema después de la migración de Swift 3
iOS
@iOS Desafortunadamente, no tuve una solución real. El problema se resolvió con Xcode 8.3 que se acaba de lanzar.
Mario A Guzman
¿Por qué es necesario que esté en la sección Binarios integrados? Estoy tratando de usar ObjectiveDropboxOfficial.framework. Recibí este error, lo puse en Embedded y lo 'solucionó'. Sin embargo, lo saqué de nuevo y sigue 'arreglado'. Sin embargo, otros objetivos que están configurados con el mismo AFAICT fallan. Los documentos de instalación de Dropbox no dicen que se coloquen en Embedded Frameworks.
Jim Leask
Eso ayudó. También asegúrese de no tener duplicados en las "Bibliotecas y marcos vinculados". Cuando lo agrega a la sección Incrustado, lo agrega automáticamente a la sección Vinculado.
milesmeow
59
Para mí un simple Cleany Rebuildresuelto. Espero eso ayude.
Limpiar, limpiar la carpeta de compilación, eliminar el contenido de la carpeta de datos derivados, instalar Pod (donde corresponda), reiniciar Xcode, reiniciar la máquina; luego unte un poco de sangre de cordero en la puerta por si
acaso
1
¡¡También me ayudó !!
Dmitriy Greh
Eliminar el directorio y obtener la última confirmación de git no ayudó, pero limpiar y reconstruir ayudó lol
え る ま る
8
En mi caso, tuve que atar ají y limón en el marco de mi puerta.
Naresh
1
Tuve que sacrificar a mi primogénito también, ¡pero funcionó!
Andor Németh
25
Este problema apareció después de la actualización del sistema hasta macOS 10.15.2 beta. La desactivación de "Thread Sanitizer" resolvió el problema (Xcode 11.2). Ahora no puedo usar Thread Sanitizer y tengo que esperar a la próxima actualización del sistema operativo.
Esta publicación responde a las preguntas originales cuando surge el problema en los simuladores de Xcode 11.3 después de actualizar a Mac 10.15.2. Parece el error de Apple, consulte forums.developer.apple.com/thread/126891
Vadim Motorine
19
Agregar el marco a la lista de activos binarios incorporados solucionó esto. Así es como se ve la configuración de un marco externo en su forma final en la GUI de Xcode como un marco incrustado (Xcode 9.2, personalmente me gusta más un rastro de miga de pan visual ;-)):
¿Apple bloqueó intencionalmente el tiempo de ejecución para informar de alguna manera al desarrollador sobre el problema de que no puede usar marcos que no sean de Apple como marcos simplemente vinculados en el desarrollo de iOS? Creo que sería mejor que apareciera como un error de compilación ... con un botón que dijera "¡mover!"
El uso de Embedded Binaries evita que el usuario final tenga que agregar el Framework independientemente de su aplicación (o tener que hacerlo con un instalador). En el caso del iPhone (iOS), eso es imposible, pero en macOS es posible, pero puede complicarse rápidamente.
Para el usuario final, es mucho mejor simplemente arrastrar y soltar una aplicación para instalarla en macOS, que es donde la integración se convierte en un beneficio. La incrustación también evita los clásicos "conflictos de DLL" de tener que administrar versiones externas de su marco. (el espacio en disco es barato, el tiempo de mi cliente es precioso).
Pequeña actualización. Xcode 10.1 ahora le permite arrastrar el marco personalizado desde la sección "Vincular binarios con bibliotecas", donde va de forma predeterminada, a la sección "Copiar recursos del paquete" donde debe estar ... Ya no solo copia la referencia pero lo mueve también.
Captura de
13
¡Arreglé el error en mi proyecto ahora mismo!
Si está utilizando un marco rápido en el proyecto Object-C, le aconsejo que cambie la configuración de compilación.
La opción Incrustar siempre las bibliotecas estándar de Swift en SÍ. Me gusta esto:
super hombre, luché con este problema 1,5 días. incluso encontré esta bonita matriz twitter.com/isupportmatrix cambiándola a requerida resuelta a mi lado también
swift2geek
y también funcionó solo con la configuración en Archivo -> Configuración del proyecto-> Sistema de compilación heredado
swift2geek
10
Xcode 11.1, apagar Do not Embed, Embed & Signes una buena opción.
2) Asegúrese de haber agregado sus binarios a través de la sección "Insertar binarios".
3) Asegúrese de haber habilitado la firma de marcos en la sección de fase de compilación.
4) Asegúrese de que los marcos incrustados no sean enlaces simbólicos.
5) Puede hacer que los marcos vinculados sean opcionales en lugar de obligatorios en la fase "Vincular binarios con bibliotecas". Esto le dirá a iOS que no busque estos marcos durante el lanzamiento. ¡Pero de todos modos necesitas corregir los errores para usar esos marcos!
6) Compruebe si todas las entradas de info.plist son correctas. En mi caso, estaba usando un archivo info.plist de Mac para iOS. Estaba buscando algún archivo xib que no estaba presente en el proyecto iOS.
7) Haga una limpieza y construya después de cualquier cambio. Esto es necesario porque xcode no copia / cambia estos archivos si ya existen.
8) Elimine la aplicación del iPad y luego instálela. La misma razón que 7.
Guard Malloc, ser correcto. ¿Alguien sabe por qué soluciona el bloqueo?
Mojo66
1
También puede intentar limpiar el proyecto y luego ejecutarlo nuevamente o simplemente reiniciar Xcode. Este tipo de errores son simplemente molestos y son como errores en Xcode
Karanveer Singh
5
Para responder a la pregunta original "¿Qué puedo hacer para tener más información sobre el problema?", Este hilo del foro de Apple proporciona un consejo muy simple: simplemente ejecute su aplicación que falla fuera de XCode (es decir, deténgala de XCode, luego ejecútela manualmente en su dispositivo). Esto producirá un registro de fallos que contiene más detalles sobre lo sucedido. Luego, puede revisar este registro desde el menú de la ventana XCode / Dispositivos y simuladores -> Ver registros de dispositivos.
Enfrenté el mismo problema con Xcode 11.3 y macOS Catalina 10.15.2. La aplicación funcionaba bien en el dispositivo, pero no en el simulador. Parece que hay un problema con Simulator y la solución es desactivar Thread Sanitizer.
Encontré un error con la misma firma (mi proyecto estaba en Obj-C) y descubrí que había olvidado vincularme con el marco apropiado. El mensaje de error en el registro de depuración que llevó a encontrar el error fue:
dyld: Símbolo no encontrado: _OBJC_CLASS _ $ _ SFSafariViewController
Para mi error específico, agregar SafariServices.framework en los Objetivos -> Fases de compilación -> "Vincular binarios con bibliotecas" resolvió el problema. Si bien es probable que no tenga el mismo error y resolución específicos, es útil verificar el registro de depuración en busca de pistas.
Tuve esta situación después de actualizar Xcode a v10.2.1 y rápido a v5.0 Si estás usando carthage + RxSwift, el nuevo RxSwift usa RxRelay.framework. Debe ir a su directorio / Carthage / Build, encontrar ese marco y arrastrarlo a su proyecto. No olvides agregarlo también a tu carthage copy-frameworksscript:
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Si está utilizando un marco escrito en Swift en una aplicación Objective-C, debe incluir la cadena de herramientas Swift en la aplicación que consume el marco.
La forma en que encontré para hacer esto es crear un archivo rápido ficticio en la aplicación para que XCode reconozca rápido y lo agregue apropiadamente al proyecto. A continuación, puede eliminar el archivo ficticio.
Me encantaría que alguien supiera una manera mejor de agregar explícitamente swift a un proyecto de objetivo-c sin agregar un archivo swift.
Estaba enfrentando el mismo problema. Establecer 'Siempre incrustar bibliotecas estándar Swift' en Sí en la configuración de compilación de mi objetivo funcionó para mí.
Para agregar a la larga lista de encuentros con este error, ocurre cuando estoy en XCode12.2 Beta 2 implementando en mi Mac con MacOS 10.15.5 con el objetivo de implementación configurado en MacOS 11.0. Esta situación sucedió porque estaba probando la aplicación Tutorial de Mac Catalyst sobre cómo agregar una barra lateral. Cambiar el objetivo a MacOS 10.15.5 eliminó el error e inició la aplicación correctamente.
He arreglado mi error en mi proyecto.
1. Verifique otros hilos cuando ocurrió el error. Descubrí que mi error es sobre la cámara.
Agregue la privacidad de la cámara en el archivo Info.plist.
1) Abra el archivo info.plist.
2) Agregue una nueva clave llamada "Privacidad - Descripción de uso de la cámara" e ingrese una cadena que describa por qué la aplicación necesita cámara. Las descripciones se mostrarán cuando su aplicación necesite usar la privacidad.
Acabo de tener el mismo problema y la razón se debió al hecho de que revoqué mis Certificados de desarrollador y creé otros nuevos con Xcode 10, después de una nueva actualización de macOS Mojave (para algunos, eliminó todas las credenciales de inicio de sesión y algunas obsoletas certificados de llavero).
Entonces, todo lo que tuve que hacer fue eliminar las aplicaciones instaladas de mi dispositivo y ejecutarlas a través de Xcode nuevamente, para que se instale el nuevo perfil de aprovisionamiento correcto en mi dispositivo :)
A veces sucede cuando usa marcos del sistema a los que solo se puede acceder desde una versión de iOS posterior a la versión de destino. Puede solucionarse marcando este marco vinculado como opcional.
Por ejemplo, un proyecto dirigido a iOS 11 y que esté utilizando AuthenticationServices para la función Autocompletar de iOS 12 se bloqueará en iOS 11 de la manera descrita.
En realidad, tuve el problema con 11.3.1 y Thread Sanitizer ya estaba desactivado como se mencionó anteriormente. En mi caso, el problema era que solía tener diferentes versiones de xCode en mi carpeta de aplicaciones como esa
Me lleva 2 días comprender que el sistema de compilación se ve en /Applications/Xcode.app de forma predeterminada. Entonces, llevar 11.3.1 a /Applications/Xcode.app finalmente resuelve el problema
Además, si está utilizando marcos personalizados, asegúrese de configurar el tipo Mach-O en biblioteca estática. Leí en alguna parte que IOS no permite dylib. De todos modos esto funcionó para mí.
Para mí un simple
Clean
yRebuild
resuelto. Espero eso ayude.fuente
Este problema apareció después de la actualización del sistema hasta macOS 10.15.2 beta. La desactivación de "Thread Sanitizer" resolvió el problema (Xcode 11.2). Ahora no puedo usar Thread Sanitizer y tengo que esperar a la próxima actualización del sistema operativo.
fuente
Agregar el marco a la lista de activos binarios incorporados solucionó esto. Así es como se ve la configuración de un marco externo en su forma final en la GUI de Xcode como un marco incrustado (Xcode 9.2, personalmente me gusta más un rastro de miga de pan visual ;-)):
¿Apple bloqueó intencionalmente el tiempo de ejecución para informar de alguna manera al desarrollador sobre el problema de que no puede usar marcos que no sean de Apple como marcos simplemente vinculados en el desarrollo de iOS? Creo que sería mejor que apareciera como un error de compilación ... con un botón que dijera "¡mover!"
El uso de Embedded Binaries evita que el usuario final tenga que agregar el Framework independientemente de su aplicación (o tener que hacerlo con un instalador). En el caso del iPhone (iOS), eso es imposible, pero en macOS es posible, pero puede complicarse rápidamente.
Para el usuario final, es mucho mejor simplemente arrastrar y soltar una aplicación para instalarla en macOS, que es donde la integración se convierte en un beneficio. La incrustación también evita los clásicos "conflictos de DLL" de tener que administrar versiones externas de su marco. (el espacio en disco es barato, el tiempo de mi cliente es precioso).
fuente
¡Arreglé el error en mi proyecto ahora mismo!
Si está utilizando un marco rápido en el proyecto Object-C, le aconsejo que cambie la configuración de compilación.
La opción Incrustar siempre las bibliotecas estándar de Swift en SÍ. Me gusta esto:
Espero que esto te haya sido útil.
fuente
¡Finalmente resuelto!
Lo que funcionó para mí fue hacer que el marco sea "opcional" en lugar de "obligatorio".
¡Espero que ayude!
fuente
Xcode 11.1, apagar
Do not Embed
,Embed & Sign
es una buena opción.Gracias @mkonovalov, @William Cerniuk
fuente
1) Continúe la ejecución para ver si aparece algún mensaje en el depurador como "MyFramework.framework" no encontrado. Si ese es el caso, siga esta discusión: OS X Framework Library no cargada: 'Imagen no encontrada' Para mí, esta respuesta funcionó: https://stackoverflow.com/a/44796734/4060763
2) Asegúrese de haber agregado sus binarios a través de la sección "Insertar binarios".
3) Asegúrese de haber habilitado la firma de marcos en la sección de fase de compilación.
4) Asegúrese de que los marcos incrustados no sean enlaces simbólicos.
5) Puede hacer que los marcos vinculados sean opcionales en lugar de obligatorios en la fase "Vincular binarios con bibliotecas". Esto le dirá a iOS que no busque estos marcos durante el lanzamiento. ¡Pero de todos modos necesitas corregir los errores para usar esos marcos!
6) Compruebe si todas las entradas de info.plist son correctas. En mi caso, estaba usando un archivo info.plist de Mac para iOS. Estaba buscando algún archivo xib que no estaba presente en el proyecto iOS.
7) Haga una limpieza y construya después de cualquier cambio. Esto es necesario porque xcode no copia / cambia estos archivos si ya existen.
8) Elimine la aplicación del iPad y luego instálela. La misma razón que 7.
fuente
Desmarcar "Guard Malloc" en el diagnóstico funcionó para mí.
fuente
Guard Malloc
, ser correcto. ¿Alguien sabe por qué soluciona el bloqueo?Para responder a la pregunta original "¿Qué puedo hacer para tener más información sobre el problema?", Este hilo del foro de Apple proporciona un consejo muy simple: simplemente ejecute su aplicación que falla fuera de XCode (es decir, deténgala de XCode, luego ejecútela manualmente en su dispositivo). Esto producirá un registro de fallos que contiene más detalles sobre lo sucedido. Luego, puede revisar este registro desde el menú de la ventana XCode / Dispositivos y simuladores -> Ver registros de dispositivos.
fuente
No había aplicado la "Privacidad - Descripción de uso de la cámara" en info.plist.
Sin embargo, no sé si esta información ayuda a alguien más ...
fuente
Enfrenté el mismo problema con Xcode 11.3 y macOS Catalina 10.15.2. La aplicación funcionaba bien en el dispositivo, pero no en el simulador. Parece que hay un problema con Simulator y la solución es desactivar Thread Sanitizer.
Consulte: https://forums.developer.apple.com/message/397978#397978
Espero que esto ayude.
fuente
Encontré un error con la misma firma (mi proyecto estaba en Obj-C) y descubrí que había olvidado vincularme con el marco apropiado. El mensaje de error en el registro de depuración que llevó a encontrar el error fue:
dyld: Símbolo no encontrado: _OBJC_CLASS _ $ _ SFSafariViewController
Para mi error específico, agregar SafariServices.framework en los Objetivos -> Fases de compilación -> "Vincular binarios con bibliotecas" resolvió el problema. Si bien es probable que no tenga el mismo error y resolución específicos, es útil verificar el registro de depuración en busca de pistas.
fuente
Tuve esta situación después de actualizar Xcode a v10.2.1 y rápido a v5.0 Si estás usando carthage + RxSwift, el nuevo RxSwift usa
RxRelay.framework
. Debe ir a su directorio / Carthage / Build, encontrar ese marco y arrastrarlo a su proyecto. No olvides agregarlo también a tucarthage copy-frameworks
script:$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Resuelto gracias a: https://stackoverflow.com/a/52550148/2493555
fuente
Si está utilizando un marco escrito en Swift en una aplicación Objective-C, debe incluir la cadena de herramientas Swift en la aplicación que consume el marco.
La forma en que encontré para hacer esto es crear un archivo rápido ficticio en la aplicación para que XCode reconozca rápido y lo agregue apropiadamente al proyecto. A continuación, puede eliminar el archivo ficticio.
Me encantaría que alguien supiera una manera mejor de agregar explícitamente swift a un proyecto de objetivo-c sin agregar un archivo swift.
fuente
Si usa el marco de construcción Carthage, después de arrastrar el marco a su proyecto, debe agregarlo a Binarios generales / incrustados.
fuente
Encuentro la forma correcta de resolverlo.
Asegúrese de
AppleWWDRCA.cer
establecer el modo predeterminado del sistema, luego funcionará:fuente
Estaba enfrentando el mismo problema. Establecer 'Siempre incrustar bibliotecas estándar Swift' en Sí en la configuración de compilación de mi objetivo funcionó para mí.
fuente
Tuve un problema similar que se resolvió al faltar la especificación de permiso en plist (por extraño que sea ..)
Intenté usar AVCaptureDevice y simplemente se bloqueó al iniciar (mi aplicación era mínima)
Añadiendo -
Privacy - Camera Usage Description
parainfo.plist
resolverlo por mí.fuente
Para agregar a la larga lista de encuentros con este error, ocurre cuando estoy en XCode12.2 Beta 2 implementando en mi Mac con MacOS 10.15.5 con el objetivo de implementación configurado en MacOS 11.0. Esta situación sucedió porque estaba probando la aplicación Tutorial de Mac Catalyst sobre cómo agregar una barra lateral. Cambiar el objetivo a MacOS 10.15.5 eliminó el error e inició la aplicación correctamente.
fuente
He arreglado mi error en mi proyecto.
1. Verifique otros hilos cuando ocurrió el error. Descubrí que mi error es sobre la cámara.
1) Abra el archivo info.plist.
2) Agregue una nueva clave llamada "Privacidad - Descripción de uso de la cámara" e ingrese una cadena que describa por qué la aplicación necesita cámara. Las descripciones se mostrarán cuando su aplicación necesite usar la privacidad.
fuente
Acabo de tener el mismo problema y la razón se debió al hecho de que revoqué mis Certificados de desarrollador y creé otros nuevos con Xcode 10, después de una nueva actualización de macOS Mojave (para algunos, eliminó todas las credenciales de inicio de sesión y algunas obsoletas certificados de llavero).
Entonces, todo lo que tuve que hacer fue eliminar las aplicaciones instaladas de mi dispositivo y ejecutarlas a través de Xcode nuevamente, para que se instale el nuevo perfil de aprovisionamiento correcto en mi dispositivo :)
fuente
A veces sucede cuando usa marcos del sistema a los que solo se puede acceder desde una versión de iOS posterior a la versión de destino. Puede solucionarse marcando este marco vinculado como opcional.
Por ejemplo, un proyecto dirigido a iOS 11 y que esté utilizando AuthenticationServices para la función Autocompletar de iOS 12 se bloqueará en iOS 11 de la manera descrita.
fuente
En realidad, tuve el problema con 11.3.1 y Thread Sanitizer ya estaba desactivado como se mencionó anteriormente. En mi caso, el problema era que solía tener diferentes versiones de xCode en mi carpeta de aplicaciones como esa
y
/Applications/Xcode.app - was 11.2
Me lleva 2 días comprender que el sistema de compilación se ve en /Applications/Xcode.app de forma predeterminada. Entonces, llevar 11.3.1 a /Applications/Xcode.app finalmente resuelve el problema
fuente
Además, si está utilizando marcos personalizados, asegúrese de configurar el tipo Mach-O en biblioteca estática. Leí en alguna parte que IOS no permite dylib. De todos modos esto funcionó para mí.
fuente
El mismo problema pasó conmigo. Tenía iOS 14 Beta y el problema se solucionó cuando lo actualicé a la versión oficial.
fuente
Experimenté ese problema solo cuando lo ejecuté en un dispositivo real (iPhone SE). En el proyecto de simulador funcionó como se esperaba.
Probé todas las correcciones desde este mismo hilo y desde aquí: OS X Framework Library no cargada: 'Imagen no encontrada' Ninguno de ellos funcionó para mí.
Para mí, el problema se resolvió después de reiniciar el iPhone (¡sic!).
Yo hice:
Y finalmente funciona. :)
Si cualquier otra solución falla, no olvide probarla.
fuente
Lo tengo ordenado por el comando "pod install".
fuente