iOS基础上架,证书,推送,第三方集成冷iosiOS Developer

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

2016-07-11  本文已影响1717人  天怒人怨鬼见愁

最近在做一个支付功能,用到移动的和包支付,微信支付,银联支付。但是和包支付的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。

上一篇下一篇

猜你喜欢

热点阅读