Cocoapods target has transitive dependencies that include static frameworks

最近在写一个新的Swift工程,在引用旧的objective-c的pod时开启了use_frameworks!配置项,结果在pod installpod 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当中,这样就能正常引用了。