Xcode 13.1执行pod install后单元测试失败报LLVM Profile Error求助
问题答疑
- 报错中提及的待写入文件是LLVM代码覆盖率采集生成的.profdata格式原始采样文件,用于后续生成可视化的代码覆盖率报告。
- 对应的Filename参数对应的是Xcode构建设置中的
LLVM_PROFILE_FILE配置项,也可在测试Scheme的覆盖率选项中关联配置。
排查修复手段
- 先校验测试Scheme的覆盖率配置:打开Xcode顶部菜单
Product > Scheme > Edit Scheme,选中左侧Test栏,切换到Options标签页:- 如果你不需要统计代码覆盖率,直接关闭
Code Coverage开关,重新运行测试即可验证问题是否解决 - 如果你需要开启覆盖率,确认收集范围选择
Some targets,仅添加你需要统计的项目主target,不要选择All targets,避免第三方Pod触发无路径的覆盖率写入逻辑
- 如果你不需要统计代码覆盖率,直接关闭
- 检查Target的构建设置:选中项目根节点,切换到测试Target的
Build Settings页,搜索以下三个配置项:- 找到
LLVM Profile File,确认其值为默认的$(TEMP_DIR)/%p_%m.profdata,如果为空或值非法就会触发文件名未设置报错 - 检查
Other C Flags、Other Swift Flags,确认没有手动添加-fprofile-instr-generate、-fprofile-arcs这类强制开启覆盖率的编译参数
- 找到
- 排查Pod配置冲突:检查Podfile中是否有全局添加编译参数的post_install钩子,很多时候为了开启主项目覆盖率会写全局配置给所有Target加编译参数,第三方Pod被强制开启覆盖率但没有配置输出路径就会触发该报错。如果有这类配置,修改规则排除所有Pod Target,仅给项目自有主Target、测试Target添加覆盖率参数
- 清理缓存重试:修改完成后,按
Cmd + Shift + K清空Xcode构建缓存,删除~/Library/Developer/Xcode/DerivedData下当前项目对应的文件夹,重新执行pod install后运行测试
内容的提问来源于stack exchange,提问作者liveAnyway
相关产品推荐
相关产品推荐

