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.

Author: rjstelling, 2016-09-13

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.

 16
Author: Tim Friedland,
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

 10
Author: Suresh Kansujiya,
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.

 9
Author: fredericouimet,
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

SWIFT_VERSION = 2.3-Configuración de compilación

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.

 6
Author: rjstelling,
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.

 3
Author: Chamira Fernando,
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.

 2
Author: Jason Moore,
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.

 1
Author: saltwat5r,
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í.

 1
Author: Austin,
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.

 0
Author: mbonness,
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 .

 0
Author: micmdk,
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