在集成三方库的时候出现了两个库文件冲突的问题。百度单号识别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 -creat /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
网友评论