不同第三方库重复存在某一文件解决方案

在集成三方库的时候出现了两个库文件冲突的问题。百度单号识别OCR与百度人脸识别SDK中均包含报错的同一个文件。解决方案就是需要拆分一个库,把这个库中的冲突文件删除然后重新生成即可。具体如下:

拆分以libTradingSystem.a静态库操作为例,冲突文件以Utils.o文件为例

1、首先检查lib架构,命令行输入:

lipo -info /Users/liuxh/Desktop/lib/libTradingSystem.a

输出结果如下,可以看到lib库支持的架构有哪些。

2、依次拆分libTradingSystem.a架构 ,下面以amv7架构拆分为例,其他架构的需要一样操作。

lipo /Users/liuxh/Desktop/libTradingSystem.a -thin armv7 -output /Users/liuxh/Desktop/libTradingSystem_armv7.a

对libTradingSystem.a这个库,同时需要拆分x86_64、arm64。

lipo /Users/liuxh/Desktop/lib/libTradingSystem.a -thin x86_64 -output /Users/liuxh/Desktop/lib/libTradingSystem_x86_64.a

lipo /Users/liuxh/Desktop/lib/libTradingSystem.a  -thin arm64 output /Users/liuxh/Desktop/lib/libTradingSystem_arm64.a

可以在output 对应的路径下看到下图文件:


3、选择有冲突的架构(库文件冲突的时候在xcode中会显示是在哪种架构冲突),找到架构内的冲突文件。

Ar -t /Users/liuxh/Desktop/lib/libTradingSystem_arm64.a

查询结果如下图所示(冲突文件为arm64架构下的Utils.o文件)

4、移除冲突文件

Ar-dv/Users/liuxh/Desktop/lib/libTradingSystem_arm64.a Utils.o

//冲突文件有多个可以这样写

Ar-dv/Users/liuxh/Desktop/lib/libTradingSystem_arm64.a Utils.o Utils.o Utils.o Utils.o

5、重新合并静态库

lipo -create /Users/liuxh/Desktop/lib/libTradingSystem_arm64.a /Users/liuxh/Desktop/lib/libTradingSystem_armv7.a /Users/liuxh/Desktop/lib/libTradingSystem_x86_64.a -output /Users/liuxh/Desktop/lib/libTradingSystem.a

完成以上操作大功告成了,把重新合并的库替换进工程中就可以完美build了!!!

你可能感兴趣的:(不同第三方库重复存在某一文件解决方案)