iOS第三方库有重复文件的问题解决方案

最近在做一个支付功能,用到移动的和包支付,微信支付,银联支付。但是和包支付的SDK里已经包含了微信支付的SDK(我也不知道这是什么想法),我把微信原生的SDK放入工程中以后,立马报错。因为很多.o文件重复了,所以需要把和包里的重复文件去掉。

duplicatesymbol_OBJC_METACLASS_$


上网搜索了一些资料,然后总结了一下步骤:


1、打开终端,直接输入

cd ~/ && mkdir librepack && cd librepack

2、把项目中的引发冲突的.a文件拷贝一份出来,/Users/momo/Desktop/SVN/Payment/Payment/ipos是文件路径。

cp /Users/momo/Desktop/SVN/Payment/Payment/ipos/libiPosLib.a ./libx.a

3、查看包信息

lipo -info libx.a

结果:此SDK支持armv7,arm64

4、分平台逐步做以下步骤

4.1、创建临时文件夹,用于存放armv7平台解压后的.o文件:

mkdir armv7

4.2、取出armv7平台的包

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

4.3、查看库中所包含的文件列表

ar -t armv7/libx-armv7.a

4.4、解压出object file(即.o后缀文件)

cd armv7 && ar xv libx-armv7.a

4.5、找到冲突的包(JSONKit),删除掉(此步可以多次操作)

rm WapAuthHandler.o

4.6、重新打包object file

cd .. && ar rcs libx-armv7.a armv7/*.o

5、多平台的SDK的话,需要多次操作第4步。操作完成后,合并多个平台的文件为一个.a文件

lipo -create libx-armv7.a libx-arm64.a -output libiPosLib-new.a

6、拷贝到项目中覆盖源文件:

cp libiPosLib-new.a /Users/momo/Desktop/SVN/Payment/Payment/ipos/libiPosLib.a


PS:每步严格按照步骤来做,唯一能该更改的内容是armv7,armv7s,arm64。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容