iOS项目中引用第三方库引发冲突的解决方法

在iOS程序开发过程中,经常会碰见引用第三方库出现类名重复使用,导致冲突。

解决方案

1、使用命令将.a库中的相同的包移除

2、在编译链接项中添加-dead_strip项

   补充说明:

  -dead_strip:删除多余的库符号;

  -all_load:让链接器把所有找到的目标文件都加载到可执行文件中;

  -force_load:所做的事情跟-all_load其实是一样的,但是-force_load需要指定要进行全部加载的库文件的路径

 

使用命令将.a库中的相同的包移除步骤如下:

1、创建临时文件夹(用于存放各平台解压后的.o文件),将.a库复制到临时文件夹中

2、建立一个子目录armv7:mkdir armv7

3、取出armv7平台的包:lipo xxx.a -thin armv7 -output armv7/xxx-armv7.a

4、查询库中所包含的文件列表(查看是否存在需进行移除的.o文件):ar -t armv7/xxx-armv7.a

5、解压出object file(即.o后缀文件):cd armv7 && ar xv xxx-armv7.a

6、找到冲突的.o后缀的文件,删除:rm xxx.o

7、重新打包object file(在此操作之前可使用【4】中命令确认是否成功移除):cd .. && ar rcs xxx-armv7.a armv7/*.o

8、将其他几个平台(i386,arm64,x86_64)包逐一按照【2-7】操作

9、重新合并.a文件:lipo create xxx-armv7.a xxx-i386.a xxx-arm64.a xxx-x86_64.a -output xxx.a

10、拷贝到项目中覆盖源文件:cp xxx.a 项目源文件路径

转载于:https://www.cnblogs.com/liujinhe/p/7105660.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值