离线打包工程5.0.3版本。新建了一个子工程,随便写一个方法,然后调用。debug模式正常,release报missing symbol called错误。然后关闭dead code stripping再编译,报如下错误
duplicate symbol '_kssymbolicator_callInstructionAddress' in:
/Users/zy/Desktop/SDK/SDK/Libs/KSCrash.framework/KSCrash(KSSymbolicator.o)
/Users/zy/Desktop/SDK/SDK/Libs/UMAPM.framework/UMAPM(KSSymbolicator.o)
duplicate symbol '_kscm_enableSwapCxaThrow' in:
/Users/zy/Desktop/SDK/SDK/Libs/KSCrash.framework/KSCrash(KSCrashMonitor_CPPException.o)
/Users/zy/Desktop/SDK/SDK/Libs/UMAPM.framework/UMAPM(KSCrashMonitor_CPPException.o)
duplicate symbol '_ksdl_getBinaryImageForHeader' in:
/Users/zy/Desktop/SDK/SDK/Libs/KSCrash.framework/KSCrash(KSDynamicLinker.o)
/Users/zy/Desktop/SDK/SDK/Libs/UMAPM.framework/UMAPM(KSDynamicLinker.o)
duplicate symbol '_enableSwapCxaThrow' in:
/Users/zy/Desktop/SDK/SDK/Libs/KSCrash.framework/KSCrash(KSCrashC.o)
/Users/zy/Desktop/SDK/SDK/Libs/UMAPM.framework/UMAPM(KSCrashC.o)
duplicate symbol '_pb_ostream_from_buffer' in:
/Users/zy/Desktop/SDK/SDK/Libs/MAMapKit.framework/MAMapKit(MAMapKit-arm64-master.o)
/Users/zy/Desktop/SDK/SDK/Libs/BaiduMapAPI_Base.framework/BaiduMapAPI_Base(pb_encode.o)
duplicate symbol '_pb_istream_from_buffer' in:
/Users/zy/Desktop/SDK/SDK/Libs/MAMapKit.framework/MAMapKit(MAMapKit-arm64-master.o)
/Users/zy/Desktop/SDK/SDK/Libs/BaiduMapAPI_Base.framework/BaiduMapAPI_Base(pb_decode.o)
ld: 6 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
端木Q
- 发布:2026-04-13 17:10
- 更新:2026-04-13 17:11
- 阅读:10
1 个回复
Ask小助手 - Ask社区AI助手
该问题是iOS第三方库依赖冲突导致的重复符号(duplicate symbols)错误。从错误日志看,存在以下冲突:
关于 "missing symbol called" 错误,这是Release模式下开启 Dead Code Stripping(死代码剥离)导致的。当编译器认为某些符号未被直接使用而将其剥离,但运行时又动态调用了这些符号,就会报此错误。关闭该选项后暴露出底层的重复符号冲突。
解决方案
根据官方文档,请按以下步骤处理:
方案一:移除冲突的第三方库(推荐)
如果业务不需要同时集成冲突的SDK:
方案二:符号剥离(必须同时集成时)
如果必须同时保留这些库,需要对
.framework或.a文件进行符号剥离,移除重复的符号定义。具体操作可参考这篇文档移除对应库的冲突符号,然后测试功能是否正常。方案三:处理开源库冲突
对于SDWebImage、ZXing等源码开源的三方库,SDK的
.h头文件存放在SDK/inc路径中。建议使用SDK内置的三方库,将对应库的头文件引入到插件工程中使用,不要重复集成。关于Dead Code Stripping
解决重复符号冲突后,如果仍需开启Dead Code Stripping(减小包体积),请确保:
-all_load或-force_load确保关键符号不被剥离注意:SDK内置的三方库版本说明请参考依赖的三方库版本说明,建议优先使用SDK已集成的库版本,避免版本冲突。
要回复问题请先登录或注册
公告
更多>相关问题