iOS项目中静态文件冲突问题的解决办法

静态文件即.a文件,由很多个.o文件组成。在项目开发中往往需要引用多个第三方的静态文件,这个时候可能会碰到静态文件冲突的问题。下面是解决问题的方法。

要用到的终端命令:(我们以armv7为例)

1.查看文件结构    lipo -info xxx.a(如果是fat file,代表支持多个平台,如 armv7,arm64等)。

2.创建文件夹,用于存放解压出来的.o文件  mkdir armv7

3.取出平台的包  lipo xxx.a -thin armv7 -output armv7/xxx-armv7.a

4.解压出.o文件(首先输入指令 cd armv7 到我们第二步创建的文件夹) ar xv xxx-armv7.a

5.删除冲突的包 rm ***.o

6.重新打包.o文件(首先输入指令 cd .. 回到上一级目录)  ar rcs xxx-armv7.a armv7/*.o

将所支持的平台逐一进行1-6的操作,这时候你将得到所支持的每个平台的一个.a文件,然后我们将这些.a文件重新打包成fat file类型的.a文件就可以了。

终端输入 lipo -create xxx-armv7.a xxx-armv7s.a -output new_name.a(假设支持armv7 和armv7s 俩个平台)。

然后把新生成的.a文件替换掉原来的.a文件问题就解决了。但是还可能出现一种情况,就是删除.o文件之后编译会出现很多方法无法引用的问题,这就说明冲突的俩个.o文件并不完全一样而且.o文件存在多个方法,这样上述方法就不可行了。这就要用到另外一种简单粗暴的方法:直接替换掉发生冲突的方法的方法名字就可以了(简单有效)。

祝大家编程愉快。

你可能感兴趣的:(iOS项目中静态文件冲突问题的解决办法)