某些无良SDK厂商, 会把他们用到的第三方库打到自己的静态库里面, 如果我们项目中也用到了这个库, 就会造成冲突编译失败.
定位
根据编译报错提示, 查看冲突的库是位于哪个文件中, 这边查看是 libcoreSupport.a 文件里面的 ZipArchive.o 库冲突
查看静态库包含的架构
一般静态库都是'胖(fat
)'库, 里面包含多个架构, 这个命令一般会输出 "xxx.a are: armv7 arm64" 之类的, 具体根据你的 .a 文件实际包含情况而定
lipo -info ./libcoreSupport.a
按架构分解 .a 库
如果要查看或者删除 .a 文件 包含的 .o 库, 需要 .a 是 NOFat
的, 所以我们要把它们都拆出来
lipo -thin arm64 ./libcoreSupport.a -output ./arm64.a
lipo -thin armv7 ./libcoreSupport.a -output ./armv7.a