基于Realm的Swift应用真机启动报错dyld: Library not loaded求助
解决真机上Realm框架加载失败的问题
针对你遇到的dyld: Library not loaded: @rpath/Realm.framework/Realm错误,结合Xcode 9和iOS 11的环境,给你几个精准的排查修复步骤:
确认Embedded Binaries和Linked Frameworks的配置一致性
打开项目的Target设置,切换到General标签:- 检查
Embedded Binaries里是否有Realm.framework,且状态是Embed & Sign - 同时确认
Linked Frameworks and Libraries里也存在Realm.framework,如果没有,点击+添加进来,确保两个列表的条目一致。很多时候手动拖入框架时会漏掉其中一个。
- 检查
验证Run Script构建阶段的正确性
切换到Build Phases标签,找到你添加的Realm脚本:- 脚本内容必须是:
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh" - 确保这个脚本放在
Embed Frameworks之后(如果有这个阶段的话),且不要勾选Run script only when installing——这个选项会导致真机构建时跳过脚本,而脚本的作用是剥离多余的架构,不执行的话就会出现加载失败。 - 另外要确认这个脚本是添加到主应用目标的Build Phases里,而不是单元测试目标。
- 脚本内容必须是:
检查Framework Search Paths的配置
切换到Build Settings标签,搜索Framework Search Paths:- 确保路径包含Realm.framework所在的目录,比如你把框架拖到了项目根目录,就添加
$(SRCROOT)并设置为recursive(递归)。路径错误会导致Xcode找不到框架,无法正确嵌入。
- 确保路径包含Realm.framework所在的目录,比如你把框架拖到了项目根目录,就添加
清理缓存并重装应用
- 先删除设备上已安装的应用
- 在Xcode里执行
Product > Clean Build Folder(快捷键Command+Shift+K) - 重启Xcode和你的iPhone 7
- 重新构建并运行到真机,很多时候缓存问题会导致这类加载错误。
确认签名和Provisioning Profile的有效性
切换到General标签的Signing部分:- 确保你的Team选择正确,Provisioning Profile是针对该设备的有效配置(可以点击
Download Manual Profiles刷新) - 框架的签名会由
Embed & Sign自动处理,但如果你的应用签名有问题,也会导致框架无法加载。
- 确保你的Team选择正确,Provisioning Profile是针对该设备的有效配置(可以点击
检查单元测试目标的框架配置
如果你给单元测试目标添加了Realm,要确保:- 单元测试目标的
Linked Frameworks and Libraries里有Realm.framework,但状态是Do Not Embed(因为主应用已经嵌入了框架,测试目标不需要重复嵌入,否则会冲突) - 测试目标的
Framework Search Paths也要正确指向Realm的目录。
- 单元测试目标的
如果以上步骤都试过还是不行,可以尝试重新下载对应版本的Realm Swift框架(确保是支持iOS 11和Xcode 9的版本,比如Realm 3.x系列),然后重新拖入项目配置一遍。
内容的提问来源于stack exchange,提问作者u84six
相关产品推荐
相关产品推荐

