相关疑难解决方法(0)

如何使用弱链接的CocoaPods库构建iOS框架

我正在尝试使用Xcode 6提供的新模板来构建一个iOS框架(Test.framework)来创建Cocoa Touch Frameworks.该框架具有Podfile中指定的不同依赖关系(如AFNetworking或FacebookSDK).我不希望将依赖项包含在框架中,我只想链接它们.

问题是,当我构建框架时,libPods.a被链接并包含在内. 问:我如何链接libPods.a库,但不包含在框架中?


更多细节:

我已经阅读了弱链接:https: //developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html 但是我没有太多使用项目设置的经验,所以我'我不是专业人士.

我试图把libPods.a作为"可选"但没有改变,依赖仍然包括在内.

我尝试从Build Phases中的"Link Binary With Libraries"部分删除libPods.a,但是我收到此错误(在清理项目文件夹并再次构建之后):

ld: library not found for -lPods-MyFramework-AFNetworking
Run Code Online (Sandbox Code Playgroud)

我试图从"其他链接器标志"中删除所有标志,但它给了我未定义的符号:

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_FBSession", referenced from:
      objc-class-ref in TestClass.o
ld: symbol(s) not found for architecture armv7
Run Code Online (Sandbox Code Playgroud)

以下是包含库的干净项目的源代码:https: //www.dropbox.com/sh/0ymuzw6kiagz02j/AABzyHiZVaQQvBEnjBgRBq3ua?dl = 0

iphone frameworks weak-linking ios cocoapods

13
推荐指数
2
解决办法
2135
查看次数

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

我正在尝试研究如何将cocoa pod依赖项添加到具有嵌入式可可触摸框架的iOS应用程序中.我的podfile设置如下:

link_with [‘TestApp’, ‘TestAppFramework’]
platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git'
pod 'google-plus-ios-sdk', '~> 1.7'
Run Code Online (Sandbox Code Playgroud)

然后我按照这里的说明添加一个带有登录按钮的视图控制器:

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

一切都没有问题.如果我然后运行应用程序,它将启动并显示一个谷歌加登录按钮,但我收到很多关于在两个地方定义谷歌类的警告,例如:

objc [6727]:类GPPSignIn在/Users/jamesburke/Library/Developer/Xcode/DerivedData/TestApp-eiqrhcijoqplxgoodgtwzncvhjk/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.将使用两者之一.哪一个未定义.

如果我然后单击登录按钮,我会收到一条错误消息,说我没有设置谷歌客户端ID - 我有,但因为GPPSignIn类依赖于共享实例,所以看起来重复的类混淆了一些事情:

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

查看堆栈跟踪,我们将从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
Run Code Online (Sandbox Code Playgroud)

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

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

cocoa-touch ios google-plus cocoapods xcode6

8
推荐指数
1
解决办法
953
查看次数