ios - the - Obteniendo el error "No hay tal módulo" usando Xcode, pero el marco está ahí
xcode for windows (30)
Actualmente estoy codificando en Swift, y tengo un error:
No existe tal módulo Social
Pero no entiendo, porque el módulo está en mi proyecto, declarado en "Marcos y bibliotecas vinculadas" y en "Binarios incrustados".
El marco está en Objective-C, así que escribí un encabezado de puente para él.
Por favor, ¿cómo puedo hacer que Xcode reconozca el marco?
¡Asegúrese de que la opción
Find implicit Dependencies
en las opciones de compilación del esquema esté activada!
Acabo de eliminar mi cocoapod. Luego, hice una instalación de pod para eliminarlo. Luego, lo agregué nuevamente a mi podfile y lo reinstalé. Eso lo hizo funcionar. No estoy seguro de por qué.
Arreglé esto con
Objetivos -> General -> Marcos vinculados y bibliotecas
Agregue el marco que debe estar en la parte superior de la carpeta del área de
Workspace
.
Dolor en el culo.
Asegúrese de que el nombre de sus configuraciones en los subproyectos coincida con el del proyecto "principal". Si el nombre de la configuración no coincide exactamente (distingue entre mayúsculas y minúsculas), Xcode cancelará el proceso de archivo y mostrará el error "No existe tal módulo ..."
Es decir, si tiene un proyecto "principal" con una configuración llamada "AppStore", debe asegurarse de que todos los subproyectos también tengan este nombre de configuración.
Ver mis capturas de pantalla adjuntas.
Descubrí que las
Import Paths
en la
Build Settings
eran incorrectas para un módulo personalizado (MySQL).
Después de señalar eso en la dirección correcta, el mensaje desapareció.
En General => Marcos y bibliotecas vinculadas, agregué mi
./Pods/Pods.xcodeproj
y funcionó.
En caso de que sea viernes por la tarde o en cualquier momento después de la 1 a. M .:
Abrir
xcodeproj
lugar de
xcworkspace
causará un error como este ...
En mi caso, después de muchos intentos de descubrir qué estaba haciendo mal al importar un marco, finalmente descubrí que el marco en sí era el problema. Si no obtiene su marco de una fuente confiable, debe inspeccionar el marco y asegurarse de que contenga una carpeta Módulos con un archivo module.modulemap dentro de él. Si module.modulemap no está presente, obtendrá el error "No existe tal módulo ''MyFramework''".
Si a la carpeta Módulos le falta la carpeta "MyFramework.swiftmodule", se encontrará el marco, pero Xcode no sabrá sobre su contenido, por lo que obtendrá diferentes errores.
En mi caso, el problema era simplemente que algunos de los proyectos que usaban el framework tenían una versión iOS de destino de implementación anterior a la versión iOS del framework de destino de implementación. Una vez que cambié la versión de iOS de destino de implementación del marco, el error desapareció.
En mi caso, la aplicación IPHONEOS_DEPLOYMENT_TARGET se configuró en 9.3, mientras que en mi marco recién creado se configuró en 10.2
El solucionador de dependencias implícitas ignoró mi nuevo marco porque los requisitos de la plataforma de destino son más altos que los requisitos de la aplicación.
Después de ajustar el objetivo de implementación de iOS del marco para que coincida con el objetivo de implementación de mi aplicación, el marco se compiló y se vinculó correctamente.
Estaba experimentando este problema también. La solución para mí fue que los esquemas de archivo entre los dos proyectos no coincidían. Tengo un xcworkspace con un proyecto de marco y un proyecto de aplicación. El problema era que en el esquema de archivo para mi aplicación, estaba usando una configuración de compilación diferente a la que usaba el marco para su esquema de archivo. Configuré ambas configuraciones de compilación para liberar, y eso solucionó el problema.
Estaba recibiendo el mismo error para
import Firebase
Pero luego noté que no estaba agregando pod a la sección de destino principal, sino solo agregando a los objetivos Test y TestUI en Podfile.
Con el comando
pod init
para un proyecto xcode swift, se genera el siguiente Podfile
# Uncomment the next line to define a global platform for your project
# platform :ios, ''9.0''
target ''MyApp'' do
# Comment the next line if you''re not using Swift and don''t want to use dynamic frameworks
use_frameworks!
# Pods for MyApp
target ''MyAppTests'' do
inherit! :search_paths
# Pods for testing
end
target ''MyAppUITests'' do
inherit! :search_paths
# Pods for testing
end
end
Por lo tanto, debe asegurarse de agregar uno a cualquier marcador de posición apropiado.
Estaba recibiendo este problema porque establecí el objetivo incorrecto en el podfile (el proyecto en sí mismo en lugar de la sección UITests).
Esto es lo que finalmente funcionó para mí. Es bastante lamentable que tuviera que hacer todo esto, pero esto fue lo único que pude encontrar que funcionó.
Después de asegurarse de que la biblioteca figuraba en el
linked framework and libraries
.
Si no está allí, puede hacer clic en
+
y, con suerte, ver su marco / pod en la lista.
Haga clic en su proyecto en el icono del esquema (vea la imagen a continuación)
Entonces debería ver su marco de enfoque en la lista:
Haga clic en
Manage Schemes.
Entonces deberías ver algo como esto:
Marque la
box
de su marco, haga clic en
AutoCreate Schemes now
y luego
close
.
Luego intente importar su marco / pod nuevamente.
A mi me funciono.
Lo que funcionó para mí es
this
solución a otra pregunta.
Cerrar Xcode y reabrir el proyecto como espacio de trabajo.
Vaya a la carpeta de su proyecto y abra el archivo
.xcodeworkspace
.
Una vez que abra el espacio de trabajo (en lugar del proyecto), los Pods deberían aparecer como proyecto de nivel superior en Project Navigator.
Los siguientes pasos me funcionaron.
- Salir de xcode
-
Ejecute
"pod update"
en la terminal -
Abra
.xcworkspace
y compile nuevamente.
No estoy muy seguro de por qué se ignora la respuesta de Martin R en los comentarios a la pregunta:
Asegúrese de haber intentado simplemente omitir la importación del marco ya que ya se agregó con el encabezado de puente .
Espero que esto ayude
No estoy seguro de por qué sucede esto, pero una forma de resolver su problema es ir a la
configuración de compilación
y definir las
Rutas de búsqueda
del
marco
a una carpeta que contenga los marcos en cuestión.
Si los marcos se colocan en el directorio de su proyecto, simplemente configure la ruta de búsqueda del marco en
$(SRCROOT)
y
$(SRCROOT)
como recursivo.
Ok, cómo se resolvió el mismo problema para mí fue establecer la ubicación de los datos derivados en relación con el directorio del espacio de trabajo en lugar de mantenerlo predeterminado. Ir a las preferencias en xcode. Vaya a la pestaña de ubicaciones en las preferencias y configure los Datos derivados en Relativo. Espero eso ayude.
Para mí, Build Active Architecture Only se configuró en Sí para la configuración seleccionada. Esto hizo el truco:
Seleccione "Pods" en el navegador de proyectos izquierdo> Seleccione "Configuración de compilación"> Construir arquitectura activa solo para no
Si está construyendo para una plataforma como tvOS, asegúrese de tener un simulador de Apple TV (es decir, coincidente) seleccionado.
Construir una aplicación tvOS con un simulador de iOS seleccionado me dio exactamente este error. Pasé la mayor parte de una hora buscando todo tipo de problemas de compilación ... doh.
Suponiendo que el Framework realmente está allí y en la ruta, etc., elimine el directorio ~ / Library / Developer / Xcode / DerivedData / ModuleCache (y limpie el proyecto y elimine los datos derivados específicos del proyecto para una buena medida).
Cuando realiza la limpieza estándar, el directorio ModuleCache no se reconstruye.
También encontré el mismo error hace unos días. Así es como resolví el problema:
El error es "módulo no encontrado"
- Cree Podfile en su directorio de proyecto raíz
- Instalar cocoapods (un administrador de dependencias para proyectos Swift e iOS)
- Ejecute la instalación de pod
-
Vaya a Configuración de compilación del proyecto:
- Encuentre el encabezado de puente Objective-c en el compilador Swift - Generación de código (si no encuentra el compilador Swift aquí, probablemente agregue un nuevo archivo Swift al proyecto)
- Arrastre y suelte el archivo de encabezado de la biblioteca desde el lado izquierdo al encabezado de puente (vea la imagen adjunta)
-
Cree un nuevo archivo de encabezado de puente: por ejemplo, TestProject-Bridging-Header.h y colóquelo en Swift Compiler → Objective-C Generated Interface Header Name (ref, vea la imagen de arriba)
- En el archivo TestProject-Bridging-Header.h, escriba #import "Mixpanel / Mixpanel.h"
- En su archivo Swift, el código debe ser: Importar Mixpanel (es decir, nombre de la biblioteca)
Eso es todo.
Tuve el mismo problema al usar Cocoapods y Swift . No noté las siguientes líneas en el Podfile:
# Uncomment this line if you''re using Swift
# use_frameworks!
Entonces, todo lo que tuve que hacer fue cambiarlo a:
# Uncomment this line if you''re using Swift
use_frameworks!
... y funcionó :)
Tuve este problema al desarrollar un Pod personalizado. Descubrí que solo necesitaba especificar la dependencia en mi Procfile:
Pod::Spec.new do |s|
# ... other declarations
s.dependency ''Alamofire'', ''~> 4.3''
end
Ya había instalado pods. Build funcionó sin problemas cuando construí la aplicación en mi dispositivo, pero el archivo no funcionó. Acabo de correr:
pod install
no se instalaron nuevos pods, solo el archivo .xcodeproj se regeneró y el archivo comenzó a funcionar
Cocoapods
el mismo error cuando agregué un par de marcos usando
Cocoapods
.
Si estamos usando Pods en nuestro proyecto, deberíamos usar
xcodeworkspace
lugar de
xcodeproject
.
Para ejecutar el proyecto a través de xcodebuild,
-workspace <workspacename>
parámetro
-workspace <workspacename>
en el comando
xcodebuild
y funcionó perfectamente.