usa pkg objective-c xcode swift frameworks carthage

objective c - pkg - El encabezado de paraguas para el módulo ''myFramework'' no incluye el encabezado ''otherFramework.h''



carthage usa (10)

Mi framework Swift / iOS9 ''viewer_protocol'' usa otro framework externo de Objective-C ( CocoaAsyncSocket ). Estoy usando Cartago para construir CocoaAsyncSocket. Hasta ahora todo funciona bien: Tengo un ejemplo de aplicación dentro de mi framework Xcode Project usando mi framework sin ningún problema.

Ahora quiero usar mi Framework en un Proyecto Xcode diferente, aunque use Carthage. Incluyo solo mi Framework como dependencia y Carthage resuelve automáticamente las dependencias de CocoaAsyncSocket. Incorporé ambos frameworks en este nuevo proyecto de Xcode y construí mi aplicación: todo funciona bien aquí, excepto una advertencia que no puedo eliminar:

/Users/hibento/Repositories/viewer_protocol/<module-includes>:1:1: Umbrella header for module ''viewer_protocol'' does not include header ''GCDAsyncSocket.h''

Este es mi encabezado de framework:

#import <UIKit/UIKit.h> //! Project version number for viewer_protocol. FOUNDATION_EXPORT double viewer_protocolVersionNumber; //! Project version string for viewer_protocol. FOUNDATION_EXPORT const unsigned char viewer_protocolVersionString[]; // In this header, you should import all the public headers of your framework using statements like #import <viewer_protocol/PublicHeader.h> #import <CocoaAsyncSocket/CocoaAsyncSocket.h>

Como puede ver, CocoaAsyncSocket.h se importa. Además, dentro de mi framework se incluye el archivo CocoaAsyncSocket.h:

¿Qué me falta aquí? Estoy usando muchos otros frameworks externos dentro de mi framework, no hay advertencias para ellos - todos estos frameworks externos están escritos en Swift - CocoaAsyncSocket es Objective-C puro.

Este es mi framework module.modulemap:

framework module viewer_protocol { umbrella header "viewer_protocol.h" export * module * { export * } } module viewer_protocol.Swift { header "viewer_protocol-Swift.h" }

Actualizar

Encontré una solución: cambiar la declaración de importación en el encabezado de mi framework desde

#import <CocoaAsyncSocket/CocoaAsyncSocket.h>

a

#import "CocoaAsyncSocket/CocoaAsyncSocket.h"

Ahora Xcode encuentra el archivo de encabezado y la advertencia desaparece.


Conseguimos esto recientemente y fue debido a la corrupción en DerivedData. Eliminar esa carpeta solucionó el problema.


De forma alternativa, puede haber expuesto archivos dentro del área Public de las fases de compilación de su marco que deberían trasladarse nuevamente al área del Project .

Si no desea que esos archivos estén dentro del encabezado paraguas de su marco para que sean de acceso público, puede revertir esto.

Goto Framework -> Target -> Build Phases y arrastre para mover los archivos de encabezado innecesarios de Public a Project.


Mira esta publicación:

@import vs #import - iOS 7

Repasa los conceptos del nuevo módulo de importación. Tenía mi propio marco personalizado y después de adoptar el nuevo método para importar el marco objetivo-c

viejo: #import <MyFramework/MyFramework.h>

nuevo: @import MyFramework;

se hizo cargo de la advertencia /


Para mí, la solución fue bastante simple, confirme todos sus cambios y vuelva a compilar. La advertencia desapareció.


Para mí, la solución fue la siguiente:

1) Cada marco de Objective C tiene 1 archivo de encabezado que contiene todo:

#import ... #import ... #import ...

2) Asegúrese de que este archivo importe el encabezado que falta.

3) Construya el proyecto nuevamente, debería eliminar la advertencia.


Recientemente encontré el mismo problema. Aparentemente tenía el archivo de encabezado configurado como public en membresía objetivo, pero no estaba expuesto en el encabezado paraguas. Se solucionó el problema al hacer que el archivo de encabezado con el acceso al project lugar de public .


Solo para completar si su encabezado está configurado como público en:

Fases de compilación> Encabezados

Usted debe cualquiera

Incluye la importación en tu encabezado principal como otros mencionaron

O

Mueva ese encabezado a "privado" si no necesita estar expuesto


Tuve el mismo problema hoy

problema era

La cabecera del paraguas para el módulo '' HockeySDK '' no incluye el encabezado '' BITHockeyBaseViewController.h ''

y la solución fue

1.build y ejecute el proyecto y vaya a Report Navigator

2. mira la advertencia, haz clic para expandir los detalles

lo hará para que el nombre del archivo donde necesita hacer el cambio como se puede ver en la captura de pantalla a continuación

Así que acabo de actualizar mi declaración de importación en el archivo AppDelegate.m

Nuevo

#import "HockeySDK/HockeySDK.h"

Antiguo

#import <HockeySDK/HockeySDK.h>

y el problema se fue ...

Espero que esto ayude a alguien. que están viniendo aquí por la solución.


Tuve el mismo problema. Parecía estar relacionado con viejos archivos de compilación.

El solucionador de problemas de Xcode estándar funcionó para mí:

  1. Proyecto limpio
  2. Datos derivados eliminados
  3. Reiniciar Xcode

tratar de arreglar un error de compilación de archivo me llevó a este error y a publicar

mi solución fue muy simple, pero tardé mucho en descubrirlo.

  • cuando ejecuté $ pod install me generó un espacio de trabajo en el mismo directorio que mi archivo .xcodeproj.
  • sin embargo, ya había creado un espacio de trabajo para usar como su directorio padre.
  • entonces simplemente borré mi viejo espacio de trabajo y fui con el que crearon los pods

¡Espero que esto ayude a alguien! glhf!