Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将cocoapod依赖项添加到cocoa touch框架_Ios_Cocoa Touch_Xcode6_Google Plus_Cocoapods - Fatal编程技术网

Ios 将cocoapod依赖项添加到cocoa touch框架

Ios 将cocoapod依赖项添加到cocoa touch框架,ios,cocoa-touch,xcode6,google-plus,cocoapods,Ios,Cocoa Touch,Xcode6,Google Plus,Cocoapods,我正在尝试解决如何将可可豆盒依赖项添加到具有嵌入式可可豆触控框架的iOS应用程序中。我的播客文件设置如下: link_with [‘TestApp’, ‘TestAppFramework’] platform :ios, '8.0' source 'https://github.com/CocoaPods/Specs.git' pod 'google-plus-ios-sdk', '~> 1.7' 然后,我添加了一个带有登录按钮的视图控制器,如下所示: 一切都顺利完成。如果我运行该应用

我正在尝试解决如何将可可豆盒依赖项添加到具有嵌入式可可豆触控框架的iOS应用程序中。我的播客文件设置如下:

link_with [‘TestApp’, ‘TestAppFramework’]
platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git'
pod 'google-plus-ios-sdk', '~> 1.7'
然后,我添加了一个带有登录按钮的视图控制器,如下所示:

一切都顺利完成。如果我运行该应用程序,它将启动并显示一个google plus登录按钮,但我收到很多关于google类在两个地方定义的警告,例如:

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

如果单击“登录”按钮,我会收到一个错误消息,说我没有设置google客户端id—我已经设置了,但是由于GPPSignIn类依赖于共享实例,看起来重复的类混淆了一些事情:

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

查看堆栈跟踪,我们从TestApp范围切换到TestAppFramework范围,即使此时框架中没有代码

…
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
我在其他一些可可豆豆上遇到了这个问题,例如MailCore2iOS,但是其他一些豆豆似乎没有发出同样的警告


有没有办法设置我的podfile,使我的框架和我的应用程序都可以访问相同的依赖项,但在运行时不会发生冲突?或者我不应该这样设置依赖项吗?

应该使用带有的链接(如果我错了,请更正我)链接同一项目中的目标。您所描述的是一个嵌入式框架(它是一个单独的项目)

实际上,您要做的是向嵌入式框架添加依赖项,如:

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添加到这两个项目中(并链接到它们的测试目标),可能您只需要在嵌入式框架中使用它。

我不确定pod“google plus ios sdk”、“~>1.7”是否支持框架。 在你的播客文件中

试着像这样使用它


谢谢,但是将GoogleSDK添加到这两个目标会导致我上面显示的错误。我最终发现,将应用程序的所有代码移动到框架中是可行的——因此,应用程序委托、所有故事板、所有视图控制器等都在框架中,而主应用程序只是变成了一个空的持有者。需要注意的是,如果您尝试对共享扩展执行相同的操作,那么cocoapods无法处理它,您必须在扩展中使用虚拟视图控制器,以便cocoapods仍然可以工作。
target 'YourProjectName' do
pod 'google-plus-ios-sdk', '~> 1.7'
end