首先,在 Podfile 中我已开启了 use_framework!。
假设主项目为 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_B的构建设置中手动添加了FRAMEWORK_A,同时在MAIN_APP的构建设置中也添加了FRAMEWORK_A和FRAMEWORK_B。代码编译没有问题,但当运行MAIN_APP时会崩溃,因为它无法加载PodB框架。我知道可以手动将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 的依赖项。但是似乎我无法使用多个依赖项实现这一点,例如:
target :FRAMEWORK_A
target :MAIN_APP
end
end
target :FRAMEWORK_B
target :MAIN_APP
end
end
因为目标:MAIN_APP不能声明两次。
除了将pod依赖项定义为Podfile中的函数并在所有目标中包含之外,还有更好的解决方案吗?
"Header.h"
导入头文件,但我想强制使用<Header.h>
从框架中导入头文件。 - Allen HsuBUILT_PRODUCTS_DIR
,然后对于不同的目标,它会编译正确版本的Pods框架。 - Allen Hsu