我正在开发一个静态库/ iOS框架(Jeff Verkoeyen方式),我为管理依赖项添加了CocoaPods(这与其他有关重复符号的问题有很大不同)。
当使用CocoaPods的客户端使用我的静态库/框架和我正在使用的第三方库时,我一直在努力解决“重复符号”问题。
我一直在阅读有关不将第三方库纳入自定义静态库的答案,但我想这样做,所以这不是一个选项。
我发现this article(谢谢你Ryan Arana)谈到这个问题和“最好的”解决方案,我不得不将它改编为我的CocoaPods驱动的静态库:
1。在工作区根目录中创建一个空的 NamespacedDependencies.h ,并将其添加到主项目中。
2. 将其添加到主项目的前缀标头中(在包含任何广告连播之前):
#import "NamespacedDependencies.h"
3. 将此挂钩添加到Podfile:
post_install do | installer |
environment_header = installer.config.project_pods_root + 'Pods-environment.h'
text = "#import \"NamespacedDependencies.h\"\n\n" + environment_header.read
environment_header.open('w') { |file| file.write(text) }
dummy_class = installer.config.project_pods_root + 'Pods-dummy.m'
text = "#import \"NamespacedDependencies.h\"\n\n" + dummy_class.read
dummy_class.open('w') { |file| file.write(text) }
end
4. 将Ryan Arana's script复制到根目录并编辑变量。
5. 使用以下内容向Pods Target添加“运行脚本构建阶段”:
./generate_namespace_header.sh
6。构建工作区。 此时我有我的NamespacedDependencies.h宏。
7. 评论或删除之前创建的“运行脚本构建阶段”。
8。再次构建。
问题: 它有效,但有问题:
1。需要手动操作。当我向Podfile添加/删除pod时(并运行pod install)我要清理工作区(在我的情况下是iphoneos和iphonesimulator),将NamespacedDependencies.h留空,添加“Run Script Build Phase”(删除者cocoapods)并重新开始。
2. 我不知道post_install挂钩是否正常,我只是从某处复制代码并更改它但我确信这必须是更好的方法。我找不到有关它的文档。
编辑: