iOS: la comstackción falla con CocoaPods no puede encontrar archivos de encabezado

Tengo un proyecto de iOS que usa CocoaPods. Todo funcionó sin problemas hasta que otro desarrollador comenzó a trabajar en el mismo proyecto. Hizo algunos cambios (solo hasta el código, hasta donde yo sé) e hizo una nueva sucursal en el repository. Revisé su sucursal e intenté comstackrlo, pero aparece un error: no se encontró el archivo ASLogger / ASLogger.h.

Incluso si borro todo el proyecto y hago una copia nueva y uso ‘pods install’. la falla de comstackción todavía está allí. ¿Tienes alguna idea de dónde puede estar el problema? Si necesita más información, solo pregunte.

Actualizar

Asegúrese de que su Podfile incluya link_with en los objectives que faltan un archivo de configuración. Cocoapods solo establece el primer objective por defecto de lo contrario. p.ej

 platform :osx, '10.7' pod 'JSONKit', '~> 1.4' link_with 'Pomo', 'Pomo Dev', 'Pomo Tests' 

—— Fin de la actualización


Nota: Tenga en cuenta que debe buscar en Project-> Info-> Configurations para conocer los pasos a continuación.


Tuve síntomas similares y descubrí que el archivo pods.xcconfig no se incluía en el target específico que estaba tratando de comstackr. Algunas de las otras soluciones sugeridas me funcionaron, pero esta parecía abordar parte del problema subyacente.

Pods.xcconfig no funciona

La solución simple fue cambiar el conjunto del archivo de configuración para los objectives que no tenían un conjunto.

Pods.xcconfig trabajando

Actualizar

He actualizado esto desde mi respuesta original, que obtuvo el voto negativo, así que espero que esto ayude. Y si lo hace, espero que me devuelva mi voto.

Si los encabezados no se importan, probablemente tenga un conflicto en HEADER_SEARCH_PATHS . Pruebe y agregue $(inherited) a las rutas de búsqueda de encabezado en sus Configuraciones de comstackción para asegurarse de que atraiga todas las rutas de búsqueda incluidas en el archivo .xcconfig de sus CocoaPods.

Esto debería ayudar con cualquier conflicto y obtener su fuente importada correctamente.

1.Verificar

configuración de comstackción -> Ruta de búsqueda -> Rutas de búsqueda de encabezado de usuario ->

  • “$ {PODS_ROOT} /” recursivo

enter image description here

enter image description here

enter image description here enter image description here

2.Verifique el estilo de importación (PUNTO CLAVE), si el podfile de su podfile ha configurado

use_frameworks!

En tu File-Bridging-Header.h , al formateador debería gustarle esto

#import "MBProgressHUD.h"

else debería estar debajo

#import

3. ¡Eso debe ser trabajo! Créeme

Archivos de encabezado, serás mi muerte …

Finalmente conseguí que funcione al agregar (incluidas las comillas)

 "${PODS_ROOT}/BuildHeaders" 

a la entrada Rutas de búsqueda del encabezado del usuario y marcando “recursivo”.

Descubrí que ${PODS_HEADERS_SEARCH_PATHS} falta y no está definido en mi twig de desarrollo de git, así que agregué "$(SRCROOT)/Pods/Headers/" para las rutas de búsqueda de encabezado con recursivo

Eso está bien para mí

Las otras dos respuestas no ayudaron aquí. Encontré otros 2 problemas que podrían solucionarlo:

  • El Proyecto-> Información-> Configuraciones en el proyecto de Xcode (su proyecto) debe establecerse en ‘Pods’ para Depuración, Liberación (y whatelse que tenga). Consulte “Encabezados no encontrados – rutas de búsqueda no incluidas”

  • Tal vez tengas que vincular el objective con el comando link_with. Consulte “No se pueden encontrar encabezados en el proyecto de biblioteca estática”

EDITAR Puede verificar un enlace simbólico de esta manera: cree un archivo de texto llamado ‘verificar’ sin una extensión. copia estas líneas en él:

 file=/Users/youUserName/XcodeProjectName/Pods/BuildHeaders/SVProgressHUD/SVProgressHUD.h if [[ ! -e $file && -L $file ]]; then echo "$file symlink is broken!" else echo "symlink works" fi 

Luego vaya a la terminal, cambie a la carpeta donde está ubicado su archivo de verificación y escriba

 bash check 

Esto es lo que funcionó para mí:

Vaya a la pestaña Destino> “Configuraciones de comstackción” y busque la configuración “Rutas de búsqueda de encabezado de usuario”.

Establezca esto en “$ (BUILT_PRODUCTS_DIR)” y marque la checkbox “Recursiva”.

Ahora el objective creado buscará en el directorio de comstackción compartido del espacio de trabajo para localizar los archivos de encabezado enlazables.

====

ACTUALIZAR

Tuve un problema similar (aunque ligeramente diferente) recientemente. Resultó que Xcode no pudo encontrar los Pods porque había abierto el archivo .xcodeproj lugar del archivo .xcworkspace . Podría ayudar a otros en el futuro.

Si ninguno de los anteriores funcionó para usted y está encontrando este error porque acaba de cambiar a use_frameworks! en tu Podfile, sigue leyendo:

Intenté todas las soluciones anteriores y mucho más antes de saber que no se trata de rutas de encabezado de búsqueda en mi caso particular; ¡es eso cuando use_frameworks! a use_frameworks! en su Podfile ya no necesita incluir marcos en su encabezado de puente, y de hecho Xcode arrojará el muy poco útil error “no se puede encontrar el encabezado”.

Lo que debe hacer es eliminar todas las importaciones de su archivo de encabezado de puente y, en su lugar, usar el import Module Swift en sus archivos Swift individuales según sea necesario, al igual que lo haría con los marcos Swift.

Y si está utilizando alguno de los encabezados del framework en sus clases Obj-C (en mi caso tenemos una clase de conveniencia que usó el FBSDK), necesita cambiarlo de una importación local a global (esto significa cambiar el #import "Module.h" to #import , que debería completarse #import cuando comienzas a escribir el nombre del framework. En mi caso fue ).

Editar: Desde entonces, aprendí que al hacer un @import Module usa el archivo paraguas, que es aún más seguro.

¿Intentó importar estilo Cocoapods?

 #import  

La información en el sitio no es muy clara, envié una solicitud de extracción:

https://github.com/CocoaPods/cocoapods.org/pull/34

Actualización: retiraron mi solicitud 🙂

La wiki ofrece un consejo sobre cómo resolver este problema:

Si Xcode no puede encontrar los encabezados de las dependencias:

Comprueba si los archivos de encabezado del pod están enlazados de forma correcta en Pods / Headers y no anulas el HEADER_SEARCH_PATHS (ver # 1). Si Xcode todavía no puede encontrarlos, como último recurso puede anteponer sus importaciones, por ejemplo, #importar “Pods / SSZipArchive.h”.

Fui el único desarrollador en el equipo que experimentó este mismo problema, funcionó perfectamente para todos, así que me di cuenta de que tenía que ser mi entorno. git clone un git clone del mismo proyecto en otro directorio y lo compilé perfectamente, luego me di cuenta de que tenía que ser algo de caché Xcode para la ruta de mi proyecto en algún lugar, que “en algún lugar” es la carpeta DerivedData, solo quítela y haga una comstackción limpia de su proyecto, funcionó para mí.

Puede obtener la ruta e incluso abrir la carpeta en el buscador yendo a:

Xcode -> Preferencias -> Ubicaciones -> ** DerivedData

Si tuvo los errores de construcción después de una ” instalación de pod ” o una ” actualización de pod “, es posible que uno de sus pods haya sido creado con XCode 6.3 mientras todavía está utilizando una versión anterior.

En mi caso, tuve que actualizar mi OSX de Mavericks a Yosemite para tener Xcode 6.3 y resolver el problema

para mí, el problema estaba en el valor de banderas de Otro Enlazador. Por alguna razón no tuve citas en indicadores como -l"xml2" -l"Pods-MBProgressHUD" .

Tuve que descargar el archivo zip de git hub y arrastrar los archivos que faltan al Finder en las rutas correspondientes en Pod / …

Tengo el mismo problema, pero las soluciones anteriores no pueden funcionar. Lo he arreglado al hacer esto:

  1. Eliminar todo el proyecto
  2. Ejecute git clone el proyecto y ejecute el paquete exec pod install
  3. cd the peoject y ejecute remote add upstream your-remote-rep-add
  4. git buscar aguas arriba
  5. GIT Checkout Master
  6. git merge upstream / master

Y luego funciona.

Actualizaré las siguientes cosas en mi configuración de comstackción y no obtuve ningún error. Para comprobar estas son las cosas al actualizar tus cocoapods.

Configuración de comstackción

Habilitar código de bit – SÍ (si está usando código de bit)

Preprocesador de macro – $ (heredado)

Otra bandera del enlazador – objc, -lc ++, $ (heredado)

Construir solo architecture

Depurar – Sí

Relese – No

Ruta de búsqueda

Ruta de búsqueda de Framework – $ (inherited) $ (PROJECT_DIR)

Ruta de búsqueda de biblioteca – $ (heredada)

Ruta de búsqueda de encabezado – $ (heredada)

Estaba en la semilla GM de Xcode 5.0 y no pude obtener ninguna de estas respuestas para funcionar. Probé todas las respuestas en SO en múltiples preguntas diferentes sobre las importaciones de encabezados con cocoapods.

FINALMENTE encontré una solución que funcionó para mí : actualicé a Xcode 5.0 a través de Mac AppStore (instalado en la parte superior de la semilla GM) y ahora las importaciones de encabezado están funcionando como se esperaba.

También tenía una versión beta de Xcode 5 en mi sistema y también la eliminé. Tal vez fue una combinación de las dos cosas, pero con suerte esto ayuda a otra persona.

Esta fue la respuesta para mí, actualicé cocoapods y creo que eso hizo que los PODS_HEADERS_SEARCH_PATHS desaparecieran. Mi solución fue similar a esto, pero utilicé “$ (PODS_ROOT) / Headers” – Andrew Aitken

Muchas gracias por esta respuesta. Me costó mucho buscar formas de solucionar mi problema. Muchas gracias.

Ninguna de las respuestas me ayudó (tenía mis pods vinculados con todos los objectives, las configuraciones de comstackción se configuraron correctamente, corrigió las rutas de búsqueda “$ (heredado)”, etc …).

El problema desapareció por sí solo después de que actualicé cocoapods a la versión de depuración más nueva usando el comando de instalación / actualización estándar:

  gem install cocoapods --pre 

o:

  sudo gem install cocoapods --pre 

(si sudo fue utilizado durante la instalación).

Debe haber sido un error de cocoapods.

Lo que funcionó para mí fue seleccionar el proyecto Pods, encontrar y seleccionar el marco de destino con el encabezado faltante en el directorio objective del proyecto Pod y establecer “Construir architecture activa solamente” en “No” en “Arquitecturas” en la configuración de comstackción del objective.

Aquí hay otro motivo: todas las rutas de encabezado parecían correctas, pero todavía teníamos un error en el archivo precomstackdo (.pch) al intentar leer un encabezado de pod.

(es decir, #import ).

Al observar el resultado de comstackción sin procesar, finalmente noté que el error estaba rompiendo nuestro objective de extensión de Watch OS, no el objective principal que estábamos creando, porque también estábamos importando el archivo de encabezado precomstackdo .pch a los objectives de Watch OS, y estaba fallando ahí. Asegúrese de que la configuración de destino del sistema operativo Watch correspondiente no intente importar el archivo .pch (especialmente si configura esa importación desde la configuración de destino principal, ¡como yo lo hice!)

Para mí, lo que lo solucionó fue que el destino de implementación de iOS para mi proyecto Pods era más bajo que mi proyecto en sí. Una vez que hice lo mismo que mi proyecto, pude encontrar el archivo de encabezado.

Resolví este problema para Xcode 8.2.1 arrastrando y soltando el marco que quiero usar.

Intenta comentar esta línea para tu objective

 # use_frameworks! 

O puede referirse a mi otra respuesta, agregué el objective de prueba unitaria a xcode – no pude importar el encabezado de conexión que no desaparecerá

Una solución simple es: 1. Eliminar la carpeta Pods y el archivo Podfile.lock. Pero no elimine Podfile 2. Ejecute el siguiente comando en la carpeta raíz de su proyecto:

 pod install