首先,我已经打开了use_framework!在 Podfile 中。
假设主项目为MAIN_APP,两个子项目为FRAMEWORK_A和FRAMEWORK_B。
MAIN_APP 需要 FRAMEWORK_A 和 FRAMEWORK_B,FRAMEWORK_B 也需要 FRAMEWORK_A。
所有项目/目标都使用 CocoaPods 来管理第三方库。
目前,我的 Podfile 如下所示:
target :MAIN_APP do
project 'MAIN_APP'
pod 'PodA'
end
target :FRAMEWORK_A do
project 'FRAMEWORK_A'
pod 'PodB'
end
target :FRAMEWORK_B do
project 'FRAMEWORK_B'
pod 'PodC'
end
我手动添加了 FRAMEWORK_A 来构建 FRAMEWORK_B 的设置,并手动添加了 FRAMEWORK_A 和 FRAMEWORK_B 来构建 MAIN_APP 的设置。
所有代码都编译良好,但在运行 MAIN_APP 时崩溃,因为它无法加载 PodB 的 Framework。
我知道我也可以手动将 PodB 添加到 MAIN_APP 和 FRAMEWORK_B 中,但是是否可以在 Podfile 中定义这种目标依赖项?
顺便说一句,当pod install
,我收到警告:
[!] Podfile 包含框架目标,而 Podfile 不包含主机目标(嵌入框架的目标)。
如果该项目是做框架开发,则可以忽略此消息。否则,向嵌入这些框架的 Podfile 添加一个目标,以使此消息消失(例如测试目标)。
据我所知,我可以将嵌套目标用于主机目标,例如:
target :FRAMEWORK_A
target :MAIN_APP
end
end
因此,CocoaPods 将设置 MAIN_APP 使用 FRAMEWORK_A 并从 FRAMEWORK_A 继承 pod 依赖项。但似乎我无法使用多个依赖项来做到这一点,例如:
target :FRAMEWORK_A
target :MAIN_APP
end
end
target :FRAMEWORK_B
target :MAIN_APP
end
end
因为 target :MAIN_APP 不能声明两次。
除了将 pod 依赖项定义为 Podfile 中的函数并包含在所有目标中之外,是否有更好的解决方案?