解决单元测试中‘library not loaded @rpath...’动态框架加载错误
解决单元测试时动态框架
@rpath加载失败问题 排查与修复步骤
1. 配置单元测试Target的Runpath Search Paths
打开单元测试Target的Build Settings,找到Runpath Search Paths,确保添加以下关键路径:
@executable_path/../Frameworks@loader_path/../Frameworks
如果第三方框架存放在项目自定义目录(比如ThirdPartyFrameworks),还要添加框架所在的实际路径,例:$(PROJECT_DIR)/ThirdPartyFrameworks
2. 确保第三方框架被复制到测试包内
- 进入单元测试Target的
Build Phases,点击+选择New Copy Files Phase - 将
Destination设置为Frameworks,把第三方动态框架拖入该Phase - 勾选
Code Sign On Copy(针对需要签名的框架)
3. 检查并修正框架的Install Name
用终端命令查看框架的安装路径:
otool -L /path/to/YourThirdPartyFramework.framework/YourThirdPartyFramework
如果输出的路径不是@rpath/YourThirdPartyFramework.framework/YourThirdPartyFramework,执行以下命令修改:
install_name_tool -id @rpath/YourThirdPartyFramework.framework/YourThirdPartyFramework /path/to/YourThirdPartyFramework.framework/YourThirdPartyFramework
4. 同步主框架Target的依赖配置
如果被测试的主框架依赖该第三方框架,需确保:
- 主框架Target的
Runpath Search Paths包含正确路径 - 第三方框架已添加到主框架的
Link Binary With Libraries列表中
5. 清理后重新构建
执行Product > Clean Build Folder,再重新运行单元测试
内容的提问来源于stack exchange,提问作者윤태수
相关产品推荐
相关产品推荐

