No se puede depurar el módulo/marco Swift integrado en la aplicación Objective-C
Títulos alternativos (para facilitar la búsqueda)
- No se puede depurar Swift 2.3 framework vinculado a una aplicación Objective-C en Xcode 8
error in auto-import: failed to get module 'XYZ' from AST context
Xcode 8- Xcode 8 no puede depurar Swift framework
warning: Swift error in module <XYZ>
- Solución alternativa para; Xcode Debugger no puede depurar aplicaciones escritas solo en Objective-C, sino que enlaza con frameworks escritos solo en Swift. (28312362)
Tengo una aplicación escrita en Objective-C que enlaza con algunos módulos (frameworks) escrito en Swift 2.x.
Pregunta
Todo (depuración, etc.) funciona bien en xcode7 , sin embargo, al pasar a xcode8 y actualizar los módulos para usar swift2.3 no pude depurar los módulos.
LLDB reportó estos errores:
warning: Swift error in module XYZ.
Debug info from this module will be unavailable in the debugger.
error: in auto-import:
failed to get module 'ABC' from AST context
Esto no sucede si enlace los módulos a una aplicación construida en Swift 2.3.
10 answers
Para mí fue tan simple como doloroso y lento:
import SDWebImage
era el PROBLEMA,
porque uno de los frameworks tenía el SDWebImage ya empaquetado (y no pude verlo), y ese framework resultó ser Objective-C, y la aplicación era Rápida.
También agregué el SDWebImage al proyecto, porque lo uso en las clases que escribo, y eso creó el lío con el que el depurador de xCode no podía lidiar.
Así que básicamente, asegúrate de no tener NADA duplicados de CUALQUIER manera, me gustaría comprobar cosas comunes como SDWebImage, por ejemplo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-26 15:02:37
Use fr v en su lugar po para depurar
Para más depuración https://www.codeproject.com/Articles/1181358/Debugging-with-Xcode
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-09 05:43:32
Discutí este problema con un ingeniero de Apple llamado Sean en WWDC 2017.
Mi equipo pasó semanas tratando de averiguar esto, y terminó siendo un error en el compilador de Apple, que nunca podríamos haber descubierto por nosotros mismos. Además, tiene una solución muy fácil.
Sucede que hay un error con la forma en que los indicadores de compilación se agregan desde los frameworks y el proyecto, y el proyecto "pure Objective-C" lo "activa".
Solución: añadir un Swift vacío archivo ("Lo que sea.swift", o lo que sea) en su proyecto Objective-C, por lo que ya no es-pure-objective-c (nuevo->archivo->Archivo Swift, no cree el encabezado de puente. El archivo solo contendrá la importación de Foundation).
Y eso es todo. Problema resuelto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-29 15:06:03
Tl: dr
Agregue una configuración definida por el usuario en "Configuración de compilación" para el destino de su aplicación.
SWIFT_VERSION = 2.3
Más información
No estoy seguro de si se trata de un error de Xcode 8 o si es la política de Apple (para intentar forzar a los desarrolladores a Swift 3.0?). Pero... de forma predeterminada, Xcode 8 instala las versiones Swift 3.0 de las bibliotecas de tiempo de ejecución Swift estándar.
Cuando se trata de depurar con LLDM, los módulos Swift 2.3 no se cargan (en el tiempo de ejecución Swift 3.0).
Forzar la aplicación a usar Swift 2.3 (o Swift heredado como Apple lo llama), soluciona el problema.
Las aplicaciones Swift tienen esta configuración expuesta por Xcode, pero debe agregarla manualmente para una aplicación Objective-C.
Otros consejos
Transfiera su código Swift 2.3 a Swift 3.0 tan pronto como sea posible, Apple no admitirá 2.x por mucho tiempo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-10 19:59:30
En mi caso, tuve que eliminar Objective-C Bridging header
del archivo de configuración de compilación. Mi archivo de cabecera puente no hizo nada.. así que estaba bien.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-30 08:54:43
Me encontré con el mensaje error in auto-import: failed to get module 'XYZ' from AST context
mientras intentaba depurar en un simulador 9.3. El cambio a un simulador 10.2 resolvió el problema.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-23 13:42:38
Intenta reiniciar Xcode. En mi caso se resolvió un problema.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-12 07:40:56
Me encontré con esto cuando construí un marco con Cartago. Intentar depurar imprimiría el error, que hacía referencia a una dependencia del framework Obj-C.
Encontré esta entrada de blog que sugirió agregar la siguiente configuración de compilación definida por el usuario a mi proyecto:
Para Depurar: REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES = NO
Para la Liberación: REMOVE_HEADERS_FROM_EMBEDDED_BUNDLES = YES
Esto solucionó el problema para mí.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-14 20:47:00
En mi caso hubo un error del compilador en el código "C" que se informó en LLDB, después de corregir el error LLDB comenzó a funcionar de nuevo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-24 20:40:55
Como sugirió Tim https://stackoverflow.com/a/41876400/1840269 la causa raíz de nuestro problema era una cuestión de duplicados.
Teníamos una categoría de wrapper obj-c para SDWebImage que se usaba tanto de obj-c como de Swift. Al importar la categoría desde Swift, todo explotó debido a la redefinición/importación duplicada, ya que el pod SDWebImage ya lo expuso como un módulo Swift.
La solución? Hemos vuelto a implementar la categoría obj-c como una extensión Rápida - y siguió usándolo tanto de Swift como de obj-c agregando @objc
delante de la extensión e importando el archivo #import "product-Swift.h"
desde obj-c.
Y tal vez empezar con la comprobación: https://developer.apple.com/library/content/qa/qa1947/_index.html .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-31 12:30:50