Cuando inicio mi aplicación con XCode, tengo un bloqueo pero no hay error
La aplicación acaba de detenerse en este hilo
¿Qué puedo hacer para tener más información sobre el problema?
Respuestas:
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.
Para mí un simple Clean
y Rebuild
resuelto. Espero eso ayude.
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).
¡Finalmente resuelto!
Lo que funcionó para mí fue hacer que el marco sea "opcional" en lugar de "obligatorio".
¡Espero que ayude!
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.
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.
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.
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-frameworks
script:
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Resuelto gracias a: https://stackoverflow.com/a/52550148/2493555
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.
Si usa el marco de construcción Carthage, después de arrastrar el marco a su proyecto, debe agregarlo a Binarios generales / incrustados.
Encuentro la forma correcta de resolverlo.
Asegúrese de AppleWWDRCA.cer
establecer el modo predeterminado del sistema, luego funcionará:
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í.
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
para info.plist
resolverlo por 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.
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
/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app
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
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í.
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.
Lo tengo ordenado por el comando "pod install".