2015-10-21 12 views
12

Sto provando a creare un framework CocoaPod privato con altre dipendenze pod.Framework CocoaPods con dipendenze - include intestazione non modulare all'interno del modulo quadro

Tra gli altri, ho aggiunto Parse come dipendenza nel file podspec:

s.dependency 'Parse' 

Tuttavia, quando provo a Lint esso,

pod lib lint MyPrivateSpec.podspec --verbose --sources '[email protected]:MY_BITBUCKET_NAME/specs.git,https://github.com/CocoaPods/Specs' 

Ottengo i seguenti errori:

Target Support Files/Parse/Parse-umbrella.h:3:9: note: in file included from Target Support Files/Parse/Parse-umbrella.h:3:

ERROR | xcodebuild: Parse/Parse/Parse.h:12:9: error: include of non-modular header inside framework module 'Parse.Parse'

[and more of these types of errors in the following lines ...]

Ho esaminato praticamente tutte le domande pertinenti poste su SO e in problemi di github, ma non sono riuscito a trovare nulla hing che ha funzionato per me. Qualcuno ha riscontrato questi problemi o ha familiarità con il motivo per cui questo non funziona?

risposta

2

Questo è purtroppo un problema con la libreria Parse stessa. Mi sono imbattuto in una situazione simile qualche tempo fa quando stavo cercando di usare la libreria Parse all'interno di un framework che stavo costruendo per iOS.

L'errore indica che è presente un'intestazione inclusa in uno dei file pubblici .h di Parse che non appartiene a un modulo. Nel caso di Parse questo è <sqlite3.h> se ricordo bene. Senza rimuoverlo dagli header pubblici di Parse non sarà possibile costruire un target framework che includa anche Parse. Questo dovrebbe essere archiviato come un bug con Parse in modo che possano lavorare su un aggiornamento per supportare build di framework modulari.

A causa della necessità per il mio progetto di costruire un obiettivo quadro ho dovuto passare utilizzando Parse nel mio progetto come risultato di quanto sopra.

Ecco un riferimento a un problema simile con risposta simile: https://stackoverflow.com/a/24728646/296708

+0

Sembra che 'sqlite3.h' non è in' file .h' pubbliche di Parse più, ma il problema è ancora lì. 'Ricerca di" sqlite3.h " in. ./Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m:13:#import ./Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabaseResult.m:12:#import ./Pods/Parse/Parse/Internal/LocalDataStore/SQLite/PFSQLiteStatement.m:12:#import ./Pods/Parse/Parse/Internal/PFDateFormatter.m:12:#import ' –

+0

Buono a sapersi. Quindi suppongo che possa ancora esserci un'altra libreria Objective-C o C inclusa in uno dei file di intestazione .h di Parse che sta ancora causando l'errore "inclusione dell'intestazione non modulare" se vedi ancora questo errore. –

+0

Sì, e poiché può essere riprodotto iniziando da 'pod lib create xxx', ho creato un problema in github per il riferimento di Parse: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/issues/673 –