最近在写一个新的Swift工程,在引用旧的objective-c的pod时开启了use_frameworks!
配置项,结果在pod install
和pod update
出现了这么一个问题
target has transitive dependencies that include static frameworks: (AAA)
问题原因
Podfile中不使用use_frameworks!时是会生成相应的.a(静态链接库)文件,然后通过static libraries来管理pod代码,在Linked时会包含该pod引用的其他的pod的.a文件
Podfile中使用use_frameworks!时是会生成相应的.framework文件(动态链接库:实际内容为Header+动态链接库+资源文件),然后通过dynamic frameworks的方式来管理pod代码,在Linked时会包含该pod引用的其他的pod的.framework文件
我们开启了use_frameworks!以动态framework的方式引用了AAA,然而AAA实际上是一个静态库,需要拷贝并链接到该pod中,然而dynamic frameworks方式并不会这么做,所以就报错了。
解决方案
在引用AAA的pod的podspec文件当中开启static_framework配置
s.static_framework = true
把该pod作为一个静态framework来编译链接,这样AAA就会被拷贝链接到到该pod的framework当中,这样就能正常引用了。