iOS12.1运行报DYLD Library not loaded: libswiftCore.dylib高版本正常原因排查
问题根因
终止描述:DYLD, Library not loaded: /usr/lib/swift/libswiftCore.dylib | 引用来源:/private/var/containers/Bundle/Application/74906475-64B7-49CD-A0A4-9C522D82CDAD/RiverAppApp.app/Frameworks/SnapKit.framework/SnapKit | 原因:镜像未找到
该问题是Swift ABI兼容规则和旧系统特性差异导致的,具体触发原因如下:
- Swift标准库的系统内置阈值:Swift 5.0才实现ABI稳定,对应的系统最低版本为iOS12.2,iOS12.1及更早的iOS系统本身没有内置
libswiftCore.dylib这类Swift核心动态库,只有APP打包时主动嵌入这些库,才能在旧系统正常运行。iOS13+系统已经内置了全量Swift标准库,所以运行不会报错。 - 依赖库的适配范围不匹配:你当前引入的SnapKit版本,最低支持系统设置高于iOS12.1,编译阶段不会生成兼容旧iOS版本的Swift库绑定配置,运行在iOS12.1上就会找不到依赖的系统Swift库。
- 项目打包配置异常:Xcode项目中的
Always Embed Swift Standard Libraries选项如果设置为NO,打包时不会把Swift标准库嵌入到APP包内,就会出现低版本系统找不到库的问题。
修复方案
- 将Xcode项目主 target 以及所有依赖子 target 的
Always Embed Swift Standard Libraries配置统一设置为YES,强制打包时把Swift标准库嵌入到APP的Frameworks目录中。 - 降级SnapKit到兼容iOS12的版本,SnapKit 5.0.1及更早版本的最低支持系统为iOS10,可适配iOS12.1运行环境。
- 统一检查所有第三方依赖的最低部署版本,确保所有依赖的最低支持系统不高于项目全局设置的最低支持版本。
内容的提问来源于stack exchange,提问作者Jason-zxl
相关产品推荐
相关产品推荐

