Sto cercando di capire come aggiungere le dipendenze del pod di cacao a un'app iOS con un framework di tocco cacao incorporato. Ho il mio podfile impostato in questo modo:aggiunta delle dipendenze di cocoapod a un framework per il tocco di cacao
link_with [‘TestApp’, ‘TestAppFramework’]
platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git'
pod 'google-plus-ios-sdk', '~> 1.7'
poi aggiungo un controller di vista con un pulsante Accedi secondo le istruzioni qui:
https://developers.google.com/+/mobile/ios/sign-in
e tutto compila senza problemi. Se poi eseguire l'applicazione si avvierà e visualizzerà un Google Plus accedi pulsante, ma ho un sacco di avvertimenti circa le classi di Google in corso di definizione in due punti, ad esempio:
objc [6727]: La classe GPPSignIn è implementata in /Users/jamesburke/Library/Developer/Xcode/DerivedData/TestApp-eiqrhcijoqplxgaoodgtwzncvhjk/Build/Products/Debug-iphonesimulator/TestAppFramework.framework/TestAppFramework e/Users/jamesburke/Library/Developer/CoreSimulator/Devices/730A1805-D46F-4D11-9F9E-DA37C1147F9A/dati/Contenitori/Bundle/Application/EB7EE52A-7FB6-45CE-81B4-1E9A45875E69/TestApp.app/TestApp. Uno dei due sarà usato. Quale è indefinito.
Se poi clicco sul pulsante Accedi ottengo un errore che dice che non ho impostare il client id google - che ho, ma perché la classe GPPSignIn si basa su un'istanza condivisa sembra che il duplicato le classi hanno cose confuse:
2014-11-24 20: 54: 25,557 TestApp [6727: 155282] *** terminazione app a causa di eccezione non identificata 'NSInvalidArgumentException', la ragione: 'devi specificare | IDcliente | per | GPPSignIn | '
Guardando nella traccia dello stack lanciamo dal campo di applicazione TestApp al TestAppFramework uno, anche se non c'è alcun codice nel quadro, a questo punto
…
3 TestAppFramework 0x000000010c7f1a9c -[GPPSignIn assertValidParameters] + 77
4 TestAppFramework 0x000000010c7f35e7 -[GPPSignIn authenticateMaybeInteractively:withParams:] + 118
5 TestAppFramework 0x000000010c7f5ac8 -[GPPSignInButton buttonPressed] + 164
6 UIKit 0x000000010b4c38be -[UIApplication sendAction:to:from:forEvent:] + 75
…
19 UIKit 0x000000010b4c2420 UIApplicationMain + 1282
20 TestApp 0x000000010a25e9f3 main + 115
ottengo questo problema con alcuni altri baccelli di cacao, ad esempio mailcore2-ios, ma alcuni altri pod non sembrano presentare gli stessi avvertimenti.
C'è un modo per impostare il mio file pod in modo che sia il mio framework che la mia app abbiano accesso alle stesse dipendenze, ma senza interferenze al runtime? O dovrei semplicemente non impostare le mie dipendenze in questo modo?
Grazie per questo, ma aggiungendo il sdk di Google ad entrambi i target si tradurrebbe nell'errore che ho mostrato sopra. Ciò che ho effettivamente trovato alla fine è stato spostare tutto il codice per l'app nel framework, quindi l'app delegata, tutti gli storyboard, tutti i controller di visualizzazione ecc. Sono nel framework e l'app principale diventa semplicemente un supporto vuoto. Una cosa da notare con questo: se si tenta di fare la stessa cosa con un'estensione di condivisione, i cocoapod non possono gestirli, è necessario avere un controller di visualizzazione fittizio nell'estensione in modo che i cocoapod possano ancora funzionare. –