共享Carthage依赖时Xcode控制台po命令无法使用问题咨询
问题解答
提交构建产物到仓库的合理性判定
使用--no-use-binaries参数本地构建后将产物提交到Git仓库确实属于不推荐的实践。这类本地构建的产物会硬编码构建设备的绝对路径、对应Xcode派生数据的临时路径,其他开发者拉取该类产物后,本地环境不存在对应路径,就会触发lldb调试时虚拟文件映射缺失的问题,也就是本次遇到的po命令失效问题。
可行替代方案
如果暂时不想调整CI缓存配置,可以选择以下方案适配现有流程:
- 优先移除全局
--no-use-binaries参数,默认使用官方提供的预构建二进制。官方构建的产物不会包含单机构建的本地绝对路径,拉取后可直接正常使用调试功能。仅针对没有提供预构建二进制的依赖,单独指定--no-use-binaries参数构建即可。 - 若必须全量使用源码构建,仅需在仓库中保留Cartfile和Cartfile.resolved文件,忽略整个Carthage/Build目录,要求所有开发人员本地执行
carthage bootstrap完成依赖构建。每个开发者本地构建的产物路径和自身设备完全匹配,可直接避免路径不匹配的问题。 - 若需要保留提交构建产物到仓库的流程,可将依赖构建动作统一收拢到CI侧执行:CI固定使用统一的构建环境、开启
--cache-builds参数构建完成后,将产物打包上传到内部文件存储服务,开发者本地拉取对应版本的产物包解压使用即可,无需改动现有CI缓存配置,也不会出现路径不匹配问题。 - 临时修复方案:无需全量重新构建所有依赖,仅针对报错的依赖单独执行
carthage build <依赖名> --no-use-binaries --use-xcframeworks重新构建即可,耗时远低于全量构建。
内容的提问来源于stack exchange,提问作者Remover
相关产品推荐
相关产品推荐

