将cocoapod依赖关系添加到cocoa触摸框架

我想解决如何添加cocoa豆的依赖关系到一个iOS应用程序,embeddedcocoa触摸框架。 我有我的podfile像这样设置:

link_with ['TestApp', 'TestAppFramework'] platform :ios, '8.0' source 'https://github.com/CocoaPods/Specs.git' pod 'google-plus-ios-sdk', '~> 1.7' 

然后我添加一个视图控制器与loginbutton按照这里的说明:

https://developers.google.com/+/mobile/ios/sign-in

一切编译没有问题。 如果我然后运行应用程序,它会启动并显示一个谷歌加loginbutton,但我得到了很多有关在两个地方定义的谷歌类的警告,例如:

objc [6727]:类GPPSignIn在/Users/jamesburke/Library/Developer/Xcode/DerivedData/TestApp-eiqrhcijoqplxgaoodgtwzncvhjk/Build/Products/Debug-iphonesimulator/TestAppFramework.framework/TestAppFramework和/ Users / jamesburke / Library / Developer /CoreSimulator/Devices/730A1805-D46F-4D11-9F9E-DA37C1147F9A/data/Containers/Bundle/Application/EB7EE52A-7FB6-45CE-81B4-1E9A45875E69/TestApp.app/TestApp。 将使用两者之一。 哪一个是未定义的

如果我然后点击loginbutton,我得到一个错误,说我没有设置谷歌客户端ID – 我有,但因为GPPSignIn类依赖于共享的实例,它看起来像重复的类有困惑的事情:

2014-11-24 20:54:25.557 TestApp [6727:155282] ***由于未捕获的exception'NSInvalidArgumentException',终止应用程序,原因:'您必须指定| clientID | 为| GPPSignIn |'

查看堆栈跟踪,我们从TestApp范围转到TestAppFramework范围,尽pipe此时框架中没有代码

 … 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 

我得到了一些其他cocoa豆荚的问题,例如mailcore2-ios,但其他一些豆荚似乎没有提出相同的警告。

有没有办法设置我的pod文件,以便我的框架和我的应用程序都可以访问相同的依赖关系,但没有在运行时发生冲突? 或者我应该不是像这样设置我的依赖?

链接_with应该用于(纠正我,如果我错了)在同一个项目中链接目标。 你所描述的是一个embedded式框架(这是一个单独的项目)。

你真正想要做的是添加依赖到embedded式框架,如:

 source 'https://github.com/CocoaPods/Specs.git' workspace 'TestApp.xcworkspace' def import_pods pod 'google-plus-ios-sdk', '~> 1.7' end target : TestAppFramework do xcodeproj 'TestAppFramework.xcodeproj' platform :ios, '8.0' link_with 'TestAppFramework', 'TestAppFrameworkTests' import_pods end target : TestApp do xcodeproj 'TestApp.xcodeproj' platform :ios, '8.0' link_with 'TestApp', 'TestAppTests' import_pods end 

这个例子将google sdk添加到两个项目(并链接到他们的testing目标),也许你只需要在embedded式框架中。

我不确定那个pod'google-plus-ios-sdk','〜> 1.7'是否支持Framework。 在你的podfile中

 target 'YourProjectName' do pod 'google-plus-ios-sdk', '~> 1.7' end 

尝试像这样使用它。