2015-05-03 20 views
18

Utilizzo di cacao in cialde 0.37.0 in un progetto Swift, con use_frameworks! impostato nel file pod, non riesco ad accedere ai file di intestazione per il pod GoogleAnalytics-iOS-SDK.Impossibile trovare intestazioni per GoogleAnalytics-iOS-SDK con Cocoapods 0.37, Swift, framework

Come devo accedere alle intestazioni del pod di Google Analytics nella mia app?

Ho provato;

import GoogleAnalytics_iOS_SDK 

In un file Swift, stile cocoapodi 0.36. Ma non c'è più un quadro creato così non va bene.

#import <GoogleAnalytics_iOS_SDK/GAI.h> 

Nell'intestazione ponte, ma non funziona (nessuna mappa modulo?)


Ho letto che il comportamento per cialde che includono solo le intestazioni nella loro 'sourse_files' cambiato nel cocoapods 0,37 (see this commit). Ciò sembra essere in risposta ai problemi causati da use_frameworks con questi pod in 0.36 (see this SO question).

Con questa modifica del comportamento di Cocoapod, la libreria statica è integrata correttamente (non era con 0.36), i simboli sono stati compilati nell'app e disponibili in fase di esecuzione. Ma non ho accesso alle intestazioni.

+1

Hai funzionato? Ricevo errore in #import -> file non trovato –

+0

@techsavvy, leggi la risposta accettata, spiega una soluzione alternativa. – alexkent

risposta

28

Questo è un bug nel Cocoapods 0.37.0. È stato registrato nel tracker come issue #3499.

Soluzione

  • Aggiungere $(SRCROOT)/Pods/GoogleAnalytics-iOS-SDK al User Header Search Paths (insieme a ricorsivo) nel target app Build Settings.
  • riferimento dell'intestazione di Google Analytics direttamente nell'intestazione di raccordo con #import "GAI.h"
+4

Sono molto scontento di dover aggiungere un'intestazione di bridging solo per questo, ma sembra che questa sia l'unica opzione valida al momento. –

+0

Grazie, mi ha risparmiato un sacco di tempo! – Joel

+0

Questo problema potrebbe essere ancora presente in CocoaPods 0.39.0, che sto utilizzando al momento. Ho aggiunto i Percorsi di ricerca delle intestazioni degli utenti e funziona, ma non riesco a far funzionare GGLContext per errori. Comunque, grazie mille, mi ha salvato un sacco di capelli da quando stavo per strappare tutto per la frustrazione. – ClockWise

2

Non so se questa è la risposta corretta o meno, ma il modo in cui l'abbiamo fatta funzionare è stato importare manualmente libGoogleAnalyticsServices.a e non tramite cocoapods.

Individuare libGoogleAnalyticsServices.a e trascinarlo nel progetto, quindi aggiungerlo a Linked Frameworks and Libraries (se non è già lì) e sei a posto. Non dimenticare di rimuoverlo dal tuo Podfile.

edit:
Non dimenticare di aggiungere i file di intestazione per il vostro ponte-header

+0

Grazie, questo è il mio piano di emergenza. Mi piacerebbe farlo funzionare con Cocoapods, quindi lascerò la domanda aperta ancora per un po '. – alexkent

3

altro trucco è aggiungere lungo percorso relativo (s) al collettore a ponte.

Questo evita di dover apportare modifiche al progetto impostazioni che possono essere sovrascritti la prossima volta che si esegue `pod install ':

#import "../../Pods/GoogleAnalytics/Headers/Public/GAI.h" 
#import "../../Pods/GoogleAnalytics/Headers/Public/GAIFields.h" 
#import "../../Pods/GoogleAnalytics/Headers/Public/GAIDictionaryBuilder.h" 

funziona anche quando si esegue il test di unità troppo, che un'altra soluzione che ho provato didn' t.