En un marco personalizado que contiene código Objective-C y Swift , el compilador Swift arroja el siguiente error:
[build_path]/unextended-module.modulemap:2:19: error: umbrella header 'bugtest.h' not found
umbrella header "bugtest.h"
^
<unknown>:0: error: could not build Objective-C module 'bugtest'
ios
swift
ios-frameworks
Tim Bodeit
fuente
fuente
En Xcode 7 Beta, con Swift 2, también sucederá si su Framework Header no se declara como "Público"
Por ejemplo, tenía un Cocoa Touch Framework con una visibilidad de "Proyecto" para el archivo de encabezado, y el error "Encabezado de paraguas ... no encontrado" para todos los archivos Swift en mi proyecto, una vez que tenía el encabezado "Público", el el error se fue
fuente
Hay 4 formas diferentes en que esto puede suceder, ignorando errores en versiones anteriores de Xcode
DEFINES_MODULE
no está configurado paraYES
CLANG_ENABLE_MODULES
no está configurado paraYES
fuente
Esto sucederá cuando la
Always Search User Paths
configuración esté habilitada para el objetivo de Framework.Configurarlo en
No
resolverá ese error.En mi humilde opinión, esto es un error en el compilador Swift y he presentado un radar con Apple.
Ver rdar: // 21038443
fuente
Para mí, el nivel de acceso era público, pero también falla en el paraguas no encontrado. Moví la sección "Encabezados" de las "Fases de construcción" a la parte superior y comenzó a funcionar. Secuencia de comandos para podfile:
No tengo ni idea de por qué está sucediendo. Probé proyectos ficticios, pero no sucedió. Solo en los grandes con múltiples dependencias. Algo con la compilación ANTES de copiar los encabezados de paraguas.
fuente
Podfile
Archivo no válido : error de sintaxis, final de entrada inesperado, esperando keyword_end.Definitivamente debes establecer tu marco en público:
fuente
Para mí, configurar 'Usar mapas de encabezado' en 'NO' resolvió el problema
fuente
Una solución más: después de cambiar el nombre de una carpeta, es posible que la ubicación anterior aún aparezca en el archivo del proyecto para el archivo .h, incluso si actualizó la ubicación a través de la barra lateral de Xcode. Esta antigua ubicación provoca el error de encabezado de paraguas.
Solución simple: elimine la referencia al archivo .h y vuelva a agregar. (¡y luego recuerde hacerlo público nuevamente!)
fuente
Descubrí que con New Swift Build System y Parallelize Build activados, obtendría errores como en esta pregunta. La solución fue vincular a los marcos que se habían importado en los archivos fuente rápidos. (Creo que anteriormente la aplicación se compilaba porque simplemente sucedió que los marcos estaban vinculados a algo creado previamente en la cola de compilación en serie).
Escribí un script para revisar todas las importaciones en todos los destinos en un espacio de trabajo y asegurarme de que sus marcos se hayan vinculado en ese destino.
https://github.com/Jon889/SwiftImportChecker
fuente
Aquí ya hay algunas respuestas excelentes. @ Shadow_x99 fue muy útil. Sin embargo, si se me permitiera complementar con mi propia experiencia.
Un encabezado general se identifica automáticamente en el proceso de construcción. No se especifica en la configuración de compilación del destino ni se hereda de la configuración del proyecto.
Entonces, para evitar este error, a partir de XCode 7 , es el siguiente;
warning: no umbrella header found for target 'MyTarget', module map will not be generated
deben tomarse dos pasos importantes.
En primer lugar, el encabezado general debe tener el mismo nombre que el objetivo . Entonces, si su objetivo es un marco llamado
MyTarget
, debe haber un encabezado llamadoMyTarget.h
.En segundo lugar, en las fases de compilación
MyTarget
, como se menciona en esa respuesta, ese archivo de encabezado debe aparecer en la sección pública como se detalla anteriormente.fuente
Tuve el mismo problema y ninguna de las respuestas sugeridas ayudó en mi caso, así que dejo esto aquí en caso de que alguien tenga el mismo problema.
Había agregado un "Ejecutar secuencia de comandos" en "Fases de compilación" pero terminé eliminándolo y fue entonces cuando comencé a recibir el error.
Mi solución terminó teniendo que limpiar el proyecto, reconstruir mi marco y luego mi proyecto de aplicación se construyó correctamente.
fuente
En mi experiencia, debe elegir en los objetivos el marco que le está dando el error, no el objetivo del proyecto.
Luego compile, y después de compilarlo estará disponible en el objetivo del proyecto.
fuente
Si está utilizando Xcode 7.1 y CocoaPods 0.39, parece haber un cambio rápido en el compilador que afecta a algunos CocoaPods (Nimble, Quick, etc.) Pruebe algunas de las soluciones especificadas en este hilo: https://github.com/ CocoaPods / CocoaPods / issues / 4420 sin embargo, si ninguno de ellos funciona, intente usar Xcode 7.0.1 o 7.2 beta. Puede obtener ambos aquí: https://developer.apple.com/downloads/ .
Editar: En mi caso, para solucionar el problema, también tuve que degradar CocoaPods a 0.38.2.
Edición posterior: parece no estar relacionado con Xcode 7.1. Simplemente degradar CocoaPods a 0.38.2 debería ayudar:
fuente
Su archivo de encabezado debe estar en la sección [Fases de compilación / Encabezados / Público].
Si su archivo de encabezado ya está en la sección [Build Phases / Headers / Public], muchas veces hacer lo siguiente resolvió mi problema:
fuente
Resolví esto cambiando el nombre de mi module.modulemap a moduleXYZ.modulemap y cambiando el nombre del archivo modulemap en la configuración del proyecto
fuente
En mi caso, acabo de construir el marco específico con su esquema. Y luego reconstruir todo el proyecto y resolvió el problema
fuente
asegúrese de que las "rutas de importación" en la configuración de compilación incluyen el archivo que está intentando incluir ...
fuente
Elimina estos archivos del directorio del proyecto.
.xcworkspace
pods/
ypodfile.lock
actualice el pod y cree el proyecto.
fuente
Lo arreglé haciendo que el Modo de compilación de la configuración de compilación del marco problemático sea Incremental.
fuente
En mi caso, el problema fue causado por eliminar el script de encabezados en Build Phases
Eliminar este script solucionó el problema.
fuente
Ninguna de las 9 respuestas me ayudó, así que intenté crear un nuevo proyecto que pudiera enviar a Apple para presentar un error. Me sorprendió no poder reproducir el problema. Revisé la configuración de compilación y eran equivalentes. Aparentemente, esto es una especie de error.
Si nada más ayuda , intente crear un nuevo proyecto e importe al menos algunas clases Objective C y Swift de su proyecto actual, compare la configuración de compilación relacionada con el marco con los valores predeterminados del nuevo proyecto y, finalmente, mueva todos los archivos al nuevo proyecto.
fuente
He estado trabajando en eso durante todo un día, pero vale la pena. Intenté todas las formas aquí, pero no lo resolví. Creé un nuevo proyecto, un experimento, y descubrí que la ruta de búsqueda del encabezado del usuario estaba configurada como $ {SRCROOT} recursiva , y la cambié a $ {SRCROOT} no recursiva , cambié la ruta del encabezado de puente (por ejemplo,
#import "SVProgressHUD.h"
->#import "Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
), la el error desapareció.fuente