iOS开发解决项目中与第三方含有重复文件的方法

2019-08-21  本文已影响0人  綪天de汰陽

最近使用第三方静态库是遇到一个问题,静态库中含有Reachability文件,而我的项目中也含有Reachability文件,而第三方的项目中也有这个文件。

解决方法

image.png

首先找到含有重复文件的静态库,使用终端查看静态库的架构信息

lipo -info test.a

得到输出信息如下:


image.png

接下来分平台移除掉重复文件

  1. 取出armv7平台的包,存储到新建的armv7文件夹中

lipo test.a -thin armv7 -output armv7/armv7.a

  1. 查看取出的库中所包含的文件列表

ar -t armv7/armv7.a


image.png

3.解压出armv7.a Object File 即.o文件

cd armv7
ar xv armv7.a

image.png
  1. 找到重复的.o文件并删除,可使用命令删除,也可以直接到文件夹中找到并删除

  2. 删除掉重复的文件后重新打包成armv7.a文件

cd ../
ar rcs armv7.a armv7/*.o

image.png
这样就得到了新的armv7.a文件
  1. 分别对arm64、armv7s平台的文件重复做1、2、3、4、5操作

  2. 将修改后的多平台文件合并成一个

lipo -create armv7.a arm64.a armv7s.a -output newTest.a

  1. 修改后的newTest.a文件拉到项目中原文件夹下替换掉原文件即可

第二种解决方法

在工程项目中Build Settings--->Other Linker Flags中添加-dead_strip,如果Other Linker Flags中含有-all_load,不可贸然删除掉,此时建议使用上面的方式,删除相同的.o文件。

上一篇下一篇

猜你喜欢

热点阅读