美文网首页
iOS三方SDK之间重复的symbols问题

iOS三方SDK之间重复的symbols问题

作者: 桔子橙子柚子_F | 来源:发表于2019-11-25 16:41 被阅读0次

参考:https://www.jianshu.com/p/e857730015cf
高德MAMapKit.framework和ZipArchive出现了

image.png

解决方案:去掉MAMapKit-arm64-master.o中的重复内容
复制MAMapKit.framework到桌面

cd MAMapKit的上一级(MAMapKit.framework)

查看MAMapKit的适用平台,可以发现arm7,i386,x86_64,arm64均可用。模拟器需修改x86_64,真机需修改arm64。已arm64为例。

lipo -info MAMapKit

提取arm64平台的MAMapKit到新的文件MAMapKit.arm64

 lipo -thin arm64 MAMapKit -output MAMapKit.arm64

获取MAMapKit.arm64文件中以_png为前缀的所有符号,生成符号列表并存于symbols文件中。( -j 选项控制只输出符号名)

nm -j MAMapKit.arm64  | grep png > symbols

删除symbols文件内容,将本次需要删除的符号写入(重复符号)
!!!注意:要以回车键结尾


image.png

可以查看MAMapKit.arm64包含的文件(其中MAMapKit-arm64-master.o就为报错文件)

ar -t MAMapKit.arm64
image.png

分解MAMapKit.arm64文件

ar -x MAMapKit.arm64

会多出三个文件,也获得了需要的MAMapKit-arm64-master.o文件


image.png

将symbols文件中的符号列表在MAMapKit-arm64-master.o文件中删除掉,生成一个新的文件MAMapKit-arm64-master.o.strip(把MAMapKit-arm64-master.o手动删除)

ld -x -r -unexported_symbols_list symbols MAMapKit-arm64-master.o -o MAMapKit-arm64-master.o.strip

将MAMapKit.arm64删除,重新生成一个新打包好的arm64平台包

ar -r MAMapKit.arm64 MAMapKit-arm64-master.o.strip Pods-MAMapKit-dummy.o

用新生成的arm64替换原有包中的arm64平台包

lipo MAMapKit -replace arm64 MAMapKit.arm64 -output MAMapKitTest

将生成的MAMapKitTest挪到项目中替换MAMapKit,并命名为MAMapKit
clean再运行就可以了
参考:https://www.jianshu.com/p/e857730015cf


最新集成个推SDK,也出现了这个问题,个推给出的解决方案是两个SDK放在不通的Target下(待尝试)。

相关文章

网友评论

      本文标题:iOS三方SDK之间重复的symbols问题

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