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

作者: 天怒人怨鬼见愁 | 来源:发表于2016-07-11 11:07 被阅读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。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/pwtjjttx.html