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

可能有很多小伙伴还不太清楚,动静态库的开发,这里推荐一篇博客:iOS-制作.a静态库SDK和使用.a静态库
如果我们存在三方库冲突就会保存:duplicate symbol _OBJC_IVAR_$_xxxx in:
目前见效最快的就是把.framework选中,taggert Membership的对勾取消掉,就编译没有问题了,但是后续的其他问题可能还会出现
我想说的是像这种开源的使用率很高的源代码本不应该包含在lib库中,就算是你要包含那也要改个名字是吧。不过没办法现在人家既然包含,我们就只有想办法分离了
  • mkdir armv7:创建临时文件夹
  • lipo libALMovie.a -thin armv7 -output armv7/armv7.a:取出armv7平台的包
  • ar -t armv7/armv7.a:查看库中所包含的文件列表
  • cd armv7 && ar xv armv7.a:解压出object file(即.o后缀文件)
  • rm ALButton.o:找到冲突的包,删除掉(此步可以多次操作)
  • cd … && ar rcs armv7.a armv7/*.o:重新打包object file
  • 多平台的SDK的话,需要多次操作第4步。操作完成后,合并多个平台的文件为一个.a文件:lipo -create armv7.a arm64.a -output new.a
  • 将修改好的文件, 拖拽到原文件夹下,替换原文件即可。
posted @ 2020-11-22 10:41  第三维  阅读(1592)  评论(0编辑  收藏  举报