0%

framework合并问题

上一篇关于静态库的文章:制作.a和.framework静态库。文章很老了,有许多问题,最近用Xcode12打包framework,遇到了一些问题,记录一下。

打包静态库常用脚本配置的方式,在Run Script添加脚本。编译之后,真机和模拟器的framework会完成合并。但Xcode升级之后脚本失效了,则分别打包,手动完成合并。

在编译时,要选中包的TARGET,分别在真机和模拟器下完成编译。在Products里面Show in Finder便能看到完成打包的framework文件。

xxx.framework文件夹中xxx文件,没有后缀名且体积最大,这就是静态库文件。

查看静态文件支持架构:

1
lipo -info 静态库xxx文件路径

真机:arm64 armv7, 模拟器:arm64 x86_64 i386

静态文件合并命令:

1
lipo -create 真机xxx文件路径 模拟器xxx文件路径 -output 新文件路径

Xcode升级12之后,报错了:

1
have the same architectures (arm64) and can't be in the same fat output file

因为两个静态文件都支持arm64,无法合并。

可以移除模拟器静态文件的arm64架构:

1
lipo 模拟器静态文件xxx -remove arm64 -output 移除后模拟器静态文件xxx名

移除之后,重新查看支持架构,只有armv7,重新合并就没有问题了。

网上对于该问题的一些解决办法:

iOS 14, lipo error while creating library for both device and simulator

XCode12 模拟器静态库支持arm64架构引发的系列问题

打赏作者一杯咖啡