2012-07-06 18 views
11

Come si aggiunge l'API di Google Drive al mio progetto iPhone per poterlo utilizzare?Aggiunta di Google Objective-C API 'GTL' al progetto iPhone

Finora, ho trascinato il progetto GTL nel mio progetto applicazione corrente (in modo che è nidificato sotto il mio progetto di app). Poi, sotto le fasi di costruzione del mio obiettivo dell'app, ho aggiunto GTL.framework e aggiunto GTL.framework al mio 'Link binary with Libraries' (vedi immagine allegata). Ciò genera il seguente errore:

clang: error: no such file or directory: '/Users/xxx/Library/Developer/Xcode/DerivedData/Golf-hfbczyaemhyzgvbrtgdxqnlzeuaa/Build/Products/Debug-iphonesimulator/GTL/GTL' 

Come risolvere questo?

enter image description here

+1

Dopo 3,5 anni i passaggi sono ancora confusi e frustranti, i ragazzi di Google non riescono a renderlo più semplice e diretto? :/ –

risposta

14

Ho lottato con questo messaggio di errore pure. Ecco come ho risolto:

Assicurati di aver aggiunto la cartella per il servizio che stai utilizzando in GTLSource/Common/(ad es. Aggiungi la cartella Drive per GoogleDrive).

Sotto GTL.xcodeproj (che hai già aggiunto al tuo spazio di lavoro) trova la cartella GTLSource e la trascina sul tuo progetto principale (Golf nel tuo caso). Fatto!

Ora è possibile rimuovere i riferimenti al GTL.xcodeproj che si è aggiunto allo spazio di lavoro.

Con questo approccio, non c'è nemmeno bisogno di aggiungere le librerie (così vengono rimossi dalla lista di librerie collegate se li avete aggiunto).

La documentazione dell'API di Google non è simile alla documentazione di Apple (non è buona).

Vorrei anche ricordare che sto costruendo un app per iOS e non MacOSX, ma questo dovrebbe funzionare per OSX pure.

enter image description here

+0

Se potessi cambiare più di una volta lo farei. Grazie –

+6

Ho riscontrato nuovamente questo problema e avendo dimenticato che l'ho risolto prima, sono arrivato su questa pagina senza rendermi conto che ho effettivamente postato questa soluzione :) – RawMean

+1

Per una soluzione Swift usa la risposta di Rob e vedi il mio http://stackoverflow.com/questions/24082606/google-objective-c-api-gtl-with-swift/24114960#24114960 –

1

Non solo fare quanto sopra, ma andare sotto "[Nome progetto] destinazione delle richieste> Costruire Fasi> Fonti compila" e fare clic sul pulsante +. Quindi aggiungere tutti i file .m, per qualche motivo la maggior parte non sono automaticamente.

Ho anche dovuto eliminare (il riferimento) a "GTLDrive_Souces.m" dalla cartella Drive, ma non capisco perché ho dovuto fare quella parte.

+0

"Non solo facendo quanto sopra?" Non capisco cosa intendi. C'è molta roba sopra la tua risposta. – Kaydell

25

Ho lottato con questo problema per la maggior parte della giornata di oggi e l'ho trovato estremamente frustrante. Finalmente ho capito tutto, quindi ecco una semplice guida passo passo su come aggiungere l'API di Google a un progetto iOS7 usando XCode5, usando ARC, senza dover creare aree di lavoro o altro.

La risposta fornita da RawMean funziona bene, ma mi ha dato problemi con ARC. Inoltre, non mi piaceva il fatto che dovevi aggiungere un progetto, creare uno spazio di lavoro e poi cancellare il progetto. Quindi la mia soluzione riguarderà entrambi questi problemi.

  1. Controlla il codice. Per fare questo, puoi semplicemente eseguire svn checkout http://google-api-objectivec-client.googlecode.com/svn/trunk/ google-api-objectivec-client-read-only dal tuo terminale. Mi riferirò a questo codice come "Codice di Google".
  2. Vai alle fasi di generazione del progetto. Espandi "Collega binario con le librerie" e aggiungi Security.framework e SystemConfiguration.framework. Questi due sono richiesti dal codice di Google.
  3. Vai alle impostazioni di generazione del tuo progetto.Utilizzando la casella di ricerca, cercare Other Linker Flags (assicurarsi che "Tutti" sia selezionato a sinistra della casella di ricerca). Aggiungi -ObjC -all_load.
  4. Ora cercare User headers search path e aggiungere il percorso completo alla directory /Source di Goggle. Assicurati di selezionare recursive.
  5. Utilizzando il Finder, vai alla directory Google /Source/OAuth2/Touch. Trascina e rilascia GTMOAuth2ViewTouch.xib nel tuo progetto.
  6. Torna alle Finder e vai a Directory di Google /Source. Trascina e rilascia GTLCommon_Sources.m e GTLCommon_Networking.m nel tuo progetto.
  7. Ora è necessario importare i file per i servizi che si desidera utilizzare. Nel mio caso, ho bisogno di utilizzare Google Drive, quindi aggiungerò quelli. Nel Finder, vai alla directory di Google /Source/Services/Drive/Generated. Trascina e rilascia GTLDrive.h e GTLDrive_Sources.m nel tuo progetto. Se si desidera utilizzare altri servizi, accedere alla relativa directory e importare il file .h e .m appropriato.
  8. Per qualche ragione, il codice di Google non fa uso di ARC, quindi se si tenta di costruire in questo momento, si otterrà ARC errori di compilazione. Quindi abbiamo bisogno di disabilitare ARC per il codice di Google solo. Per fare ciò, torna alle Fasi di costruzione del tuo progetto, ma questa volta espandi "Fonti di compilazione". Accertati che siano presenti GTLCommon_Sources.m e GTLCommon_Networking.m. Selezionali, premi invio e digita -fno-objc-arc. Questo disabiliterà ARC per entrambi. Assicurati di non aggiungere questa opzione per nessun altro file (a meno che tu non sappia cosa stai facendo).
  9. Hai finito! Ora, ogni volta che si desidera utilizzare l'API di Google, è sufficiente importare GTMOAuth2ViewControllerTouch.h e l'intestazione del servizio. Nel mio caso, poiché utilizzo Google Drive, importerò anche GTLDrive.h.

Spero che questo aiuti e impedisca ad alcune persone di tirare fuori tutti i capelli.

+1

Ha funzionato per me. Grazie! – bvs

+2

Questo funziona con Swift per favore vedi la mia risposta per i dettagli http://stackoverflow.com/questions/24082606/google-objective-c-api-gtl-with-swift/24114960#24114960 –

+2

Sei assolutamente un salvatore! Grazie mille. Ottenuto questo lavoro dopo 2 ore di lotta seguendo la documentazione ufficiale di Google. Grazie ancora. –

1

Better to use Pod

  1. How to install CocoaPods and setup with your Xcode project for reference : [ http://blogs.triffort.com/?p=309][1]
  2. Open the pod file and add

    pod 'Google-API-Client/Drive', '~> 1.0' save pod file and call pod install in terminal. Note:pod file you must give link_with 'Your_project_name', 'Your_project_nameTests' after this line only add your library

+0

come stai importando i file 'GTMOAuth2ViewControllerTouch.h' e' GTLDrive.h' nel tuo progetto con cocoapods? Non sono in grado di utilizzare alcuna istruzione di importazione e non trovo il modulo da importare. – KVISH

+0

@KVISH: Attualmente che cosa hai fatto? hai aperto .workspace o .xcodeproject? –

+0

assicurati di NON aggiungere use_frameworks! in Podfile. –

1

questo non risolve veramente il problema di installare le API di Google ma in questo repository ho effettuato l'accesso a Google Form da un'app iOS senza utilizzare l'API di Google. https://github.com/goktugyil/QorumLogs

Così si può saltare la parte API installazione in alcuni progetti

Ecco il tutorial di come configurarlo: https://github.com/goktugyil/QorumLogs/blob/master/Log%20To%20GoogleDocs.md

Heres il codice per farlo:

private static var googleFormLink: String! 
private static var googleFormAppVersionField: String! 
private static var googleFormUserInfoField: String! 
private static var googleFormMethodInfoField: String! 
private static var googleFormErrorTextField: String! 

/// Setup Google Form links 
static func setupOnlineLogs(#formLink: String, versionField: String, userInfoField: String, methodInfoField: String, textField: String) { 
    googleFormLink = formLink 
    googleFormAppVersionField = versionField 
    googleFormUserInfoField = userInfoField 
    googleFormMethodInfoField = methodInfoField 
    googleFormErrorTextField = textField 
} 

private static func sendError(#text: String) { 
    var url = NSURL(string: googleFormLink) 
    var postData = googleFormAppVersionField + "=" + text 
    postData += "&" + googleFormUserInfoField + "=" + "anothertext"     
    postData += "&" + googleFormMethodInfoField + "=" + "anothertext" 
    postData += "&" + googleFormErrorTextField + "=" + "anothertext" 

    var request = NSMutableURLRequest(URL: url!) 
    request.HTTPMethod = "POST" 
    request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type") 
    request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding) 
    var connection = NSURLConnection(request: request, delegate: nil, startImmediately: true) 
} 
Problemi correlati