jav*_*dfm 17 xcode static-libraries ios cocoapods
我正在尝试构建一个静态库,它具有在Podfile中指定的不同依赖项(例如AFNetworking).我不希望依赖项包含在最终的静态库中(调用libMyProject.a),我只想链接它们,然后创建一个MyProject.Podspec文件,我可以在其中放置相同的依赖项.
问题是,当我构建libMyProject.a时,libPods.a被链接和包含,因此如果我分发libMyProject.a并且其他人将它集成在使用某些相同依赖项的项目中,则会出现重复的符号问题.
如何链接libPods.a lib但不包含在libMyProject.a中?它应该像链接其他现有框架一样工作.
谢谢!
jav*_*dfm 12
我通过从Build Phases中的"Link Binary With Libraries"部分删除libPods.a lib来解决它.
虽然从"Link Binary with Libraries"构建阶段手动删除libPods.a确实有效,但真正的答案是不要让它首先添加到那里.
添加它的原因是pod install命令正在查找静态库目标作为其链接目标之一.这可能是因为它是列表中的第一个目标(如果你没有明确指定目标,cocoapods的实现会导致它选择第一个目标),或者可能是因为你已经在'link_with'部分中明确说明了它.
我找到的答案是使用Podfile的link_with部分显式声明目标,并省略静态库目标.
pods项目仍然是创建的,您的依赖项会按照您的预期进入,但libPods.a不会添加到静态库的构建阶段.
唯一的问题是如何放入link_with部分,如果不是你的静态库.如果您有其他想要链接的目标(例如iPhone应用程序目标),那么这是一个不错的选择.但如果您唯一真正的目标是静态库,则需要一些解决方法.
到目前为止,我的成功策略是创建一个静态库目标(是的,与主静态库中的一个单独的目标)并称之为"Dummy".在Podfile的link_with部分中指定此目标.
这有点令人反感,但它确实有效.
platform :ios, '5.1.1'
link_with ['Dummy']
pod 'AFNetworking', '= 1.3.1'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10692 次 |
| 最近记录: |