Ich versuche, herauszufinden, wie Kakaoschote Abhängigkeiten zu einem iOS-App hinzufügen, die eine eingebettete Cocoa Touch Framework hat. Ich habe meine podfile wie folgt aufgebaut:Hinzufügen cocoapod Abhängigkeiten zu einem Kakao Touch Rahmen
link_with [‘TestApp’, ‘TestAppFramework’]
platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git'
pod 'google-plus-ios-sdk', '~> 1.7'
Dann habe ich einen View-Controller mit einem Schild in Schaltfläche hinzuzufügen gemäß den Anweisungen hier:
https://developers.google.com/+/mobile/ios/sign-in
und alles kompiliert ohne Probleme. Wenn ich dann die App laufe es starten und eine Google-Anzeige und in Schaltfläche schreiben, aber ich habe eine Menge Warnungen über die Google-Klassen an zwei Stellen definiert werden, zum Beispiel:
objc [6727]: Klasse GPPSignIn implementiert sowohl /Users/jamesburke/Library/Developer/Xcode/DerivedData/TestApp-eiqrhcijoqplxgaoodgtwzncvhjk/Build/Products/Debug-iphonesimulator/TestAppFramework.framework/TestAppFramework und/Users/jamesburke/Library/Developer/CoreSimulator/Geräte/730A1805-D46F-4D11-9F9E-DA37C1147F9A/data/Behälter/Bundle/Anwendung/EB7EE52A-7FB6-45CE-81B4-1E9A45875E69/TestApp.app/TestApp. Einer der beiden wird verwendet. Welches ist undefiniert.
Wenn ich dann in Taste auf das Zeichen klicken erhalte ich eine Fehlermeldung, dass ich nicht die Google-Client-ID gesetzt haben -, die ich habe, sondern weil die GPPSignIn Klasse auf einer gemeinsamen Instanz beruht sieht es aus wie das Duplikat Klassen haben verwirrt Dinge:
2014-11-24 20: 54: 25,557 TestApp [6727: 155282] *** aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException' beenden app Grund: ‚Sie geben muss | clientID | für | GPPSignIn | '
Blick in dem Stack-Trace wir aus dem TestApp Bereich auf die TestAppFramework eines Flip, auch wenn es an dieser Stelle im Rahmen kein Code ist
…
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
ich dieses Problem mit einigen anderen Kakaofrüchten bekommen, zum Beispiel mailcore2-ios, aber einige andere Pods scheinen nicht die gleichen Warnungen zu erzeugen.
Gibt es eine Möglichkeit, meine podfile einzurichten, so dass sowohl meinen Rahmen und meine App Zugriff auf die gleichen Abhängigkeiten, aber ohne zur Laufzeit kollidieren? Oder sollte ich meine Abhängigkeiten nicht so aufstellen?
Danke dafür, aber das Hinzufügen der Google SDK zu beiden Zielen würde zu dem oben gezeigten Fehler führen. Was ich am Ende tatsächlich herausgefunden habe, war, den gesamten Code für die App in das Framework zu verschieben - also sind der App-Delegierte, alle Storyboards, alle View-Controller usw. im Framework und die Haupt-App wird einfach zu leerer Halter. Eine Sache zu beachten - wenn Sie versuchen, dasselbe mit einer Freigabeerweiterung zu tun, dann kann cocoapods nicht damit umgehen, Sie müssen einen Dummy-View-Controller in der Erweiterung haben, damit cocoapods immer noch funktionieren kann. –