有关怎么解决冲突的文章有很多,我这里在他们的基础上对一些新手解惑,怎么查看冲突。
1、查看报错:按照1、2、3、4顺序点击点击红色位置才可以查看到32个冲突的具体位置:
2、按照1要求点击后就可以看到,具体冲突如下:
如上图所示:
每一个红色方框就是一条冲突信息,上面的方框说明了:libEZOpenSDK.a里面的mp2dec.o和libplayctrl.a里面的mp2dec.o重复了。也就是两个.a文件都引入了同一个.o文件。所以产生冲突。
3、冲突解决办法:
主要逻辑:把这两个.a文件“中的一个”.a文件,把.a文件生成对应架构的.a文件,然后把这个.a文件解压缩成.o文件,删除2里面看到的重复的.o文件。然后再把这个对应.o文件合成对应架构的.a文件,再把多个架构的.a文件合成一个.a文件。最后把项目里的.a文件替换成自己处理过的.a文件。
3.1、 查看architectures: lipo -info libx.a
可以看到armv7/arm64等字眼。就说明这个libx.a包含了几种架构包。
3.2、 根据1里面含有几种架构包就执行相应命令
以armv7为例:lipo libx.a -thin armv7 -output libx-armv7.a
在libx.a所在文件夹得到libx-armv7.a
3.3、 解压出.a文件所包含的.o文件:ar xv libx-armv7.a
可以看到libx-armv7.a所在文件夹出现了很多.o文件。把2中看到的需要删除的.0文件删除掉。
3.4、 再把这些.o文件打包成对应架构的.a文件: ar rcs libx.a *.o
3.5、 针对其它架构重复3.1到3.4,会得到多个架构的.a文件。
3.6、把多个架构的.a文件合成一个.a文件: lipo -create Libarmv6.a Libarmv7.a -output Lib.a