最近使用第三方静态库是遇到一个问题,静态库中含有Reachability文件,而我的项目中也含有Reachability文件,而第三方的项目中也有这个文件。
解决方法
image.png
首先找到含有重复文件的静态库,使用终端查看静态库的架构信息
lipo -info test.a
得到输出信息如下:
image.png
接下来分平台移除掉重复文件
- 取出armv7平台的包,存储到新建的armv7文件夹中
lipo test.a -thin armv7 -output armv7/armv7.a
- 查看取出的库中所包含的文件列表
ar -t armv7/armv7.a
image.png
3.解压出armv7.a Object File 即.o文件
cd armv7
ar xv armv7.a
image.png
找到重复的.o文件并删除,可使用命令删除,也可以直接到文件夹中找到并删除
删除掉重复的文件后重新打包成armv7.a文件
cd ../
ar rcs armv7.a armv7/*.o
image.png
这样就得到了新的armv7.a文件
分别对arm64、armv7s平台的文件重复做1、2、3、4、5操作
将修改后的多平台文件合并成一个
lipo -create armv7.a arm64.a armv7s.a -output newTest.a
- 修改后的newTest.a文件拉到项目中原文件夹下替换掉原文件即可
第二种解决方法
在工程项目中Build Settings--->Other Linker Flags中添加-dead_strip,如果Other Linker Flags中含有-all_load,不可贸然删除掉,此时建议使用上面的方式,删除相同的.o文件。