使用Xcode 9.3编译真机项目时出现dyld框架加载错误求助
dyld: Library not loaded: @rpath/Agrume.framework/Agrume的问题 我之前在真机调试时也碰到过一模一样的问题——编译明明显示成功,但一运行就弹出这个找不到框架的错误,核心原因基本都是框架没有正确嵌入到App包中,或者dyld的搜索路径配置出了问题。给你几个一步步排查的解决方案:
第一步:确认框架的基础添加逻辑正确
先打开项目导航栏,看看Agrume.framework是不是真的存在于项目结构里。如果是手动拖入的框架,当初添加时一定要勾选Copy items if needed,并且在弹出的窗口里选中你的App目标(Target),确保框架和项目完成绑定,而不是只在Build Settings里填了个路径。第二步:检查Build Phases的Embed Frameworks配置(关键!)
很多人只配置了Link Binary With Libraries,但真机运行必须把框架嵌入到App包中:- 选中你的项目 -> 切换到Build Phases标签页
- 找到Embed Frameworks(如果没有这个阶段,点击左上角的
+按钮选择New Copy Files Phase,然后把阶段名称改成Embed Frameworks) - 点击阶段里的
+号,选择Agrume.framework添加进去 - 将框架的Embed属性设置为
Embed & Sign(iOS 13及以上版本推荐,旧版本可选Embed Without Signing,但签名问题可能引发其他报错)
第三步:验证Build Settings中的路径配置
- 打开Build Settings,搜索
Framework Search Paths,确保里面包含Agrume.framework所在的文件夹路径。比如框架放在项目根目录的Frameworks文件夹下,就添加$(PROJECT_DIR)/Frameworks,并设置为Recursive(递归搜索) - 搜索
Runpath Search Paths,确认里面包含@executable_path/Frameworks和@loader_path/Frameworks,这两个是dyld加载框架的默认路径,要是被误删了一定要加回来
- 打开Build Settings,搜索
第四步:清理缓存并重建项目
有时候编译缓存会导致奇怪的残留问题,执行以下操作:- 按
Cmd+Shift+K清理项目 - 按
Cmd+Option+Shift+K清理整个构建文件夹 - 关闭Xcode,重新打开后再编译运行
- 按
额外检查(如果用CocoaPods管理框架)
如果你是通过CocoaPods引入的Agrume,先确认Podfile里有没有正确声明这个库,然后执行pod deintegrate彻底移除Pods配置,再重新执行pod install,确保Pods项目的配置和主项目完全同步。最后:确认框架支持真机架构
手动下载的框架可能只有模拟器架构,用终端进入框架所在目录,执行命令:lipo -info Agrume.framework/Agrume输出结果里要包含
arm64(当前真机的主要架构),如果只有x86_64那就是纯模拟器版本,需要重新下载支持真机的框架包。
内容的提问来源于stack exchange,提问作者kjeraska

