集成MIP iOS SDK 1.12.61时libmat.a静态库报arm64链接错误
问题根因判定
该链接错误是MIP iOS SDK 1.12.61版本官方二进制打包缺陷导致,和本地项目配置无关。
1.12.61版本更新中新增了隐私合规相关逻辑,libmat.a内的ODWLogger.mm代码引用了ODWPrivacyGuard类,但官方打包静态库时未将该类的编译产物合并进最终发布的libmat.a,也没有把该类所属的依赖库随版本包一同发布,因此触发arm64架构下的符号找不到错误。1.11.72版本未引入该隐私类相关逻辑,因此可以正常编译运行。
可行解决方法
- 稳定临时方案:直接回退SDK到已验证可用的1.11.72版本,等官方发布修复了依赖缺失问题的新版本后再执行升级,该方案无运行时风险。
- 快速绕过方案:在项目中任意OC实现文件(.m文件)中添加
ODWPrivacyGuard的空类桩实现,满足链接器的符号查找要求即可通过编译,代码如下:
#import <Foundation/Foundation.h> // 链接器桩实现,用于修复1.12.61版本SDK符号缺失问题 @interface ODWPrivacyGuard : NSObject @end @implementation ODWPrivacyGuard @end
提示:当前SDK版本中对
ODWPrivacyGuard的调用为容错式弱调用,空实现不会触发运行时崩溃,但该方案仅为临时应急使用,后续替换为官方修复版本时需要删除这段冗余桩代码。
- 集成校验排查:如果是手动导入SDK集成,先检查1.12.61版本的SDK解压包内是否包含除
libmat.a之外的其他静态库、framework文件,将包内自带的所有依赖文件全部添加到项目target的Link Binary With Libraries列表中,排除漏加依赖导致的符号缺失问题。
内容的提问来源于stack exchange,提问作者SPoul
相关产品推荐
相关产品推荐

