KMM项目Xcode编译失败:sh 不存在,PhaseScriptExecution错误
KMM项目Xcode编译失败:
env: sh\r: No such file or directory 解决方案 问题原因
报错核心是执行的shell脚本使用了Windows格式的CRLF(\r\n)换行符,macOS系统解析时把sh后面的\r当成了命令名的一部分,导致找不到sh\r这个命令。
解决步骤
定位问题脚本
找到报错日志里的脚本路径:/Users/bimpos/Library/Developer/Xcode/DerivedData/iosApp-fmohpbncpclqkmfhfeoxygquosgt/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/shared.build/Script-BEA8885189D408D600647BDC228A6A20.sh也可以直接在Xcode的
Pods项目中,找到shared目标的Build Phases里对应的脚本项。转换脚本换行符为LF
方法一:终端命令处理
打开终端,进入脚本所在目录,执行:sed -i '' 's/\r$//' Script-BEA8885189D408D600647BDC228A6A20.sh方法二:文本编辑器修改
用VS Code、Sublime Text等编辑器打开脚本文件,点击编辑器右下角的换行符标识(通常显示为CRLF),切换为LF后保存文件。防止后续重复出现
- 在项目根目录创建或修改
.gitattributes文件,添加以下内容,强制shell脚本使用LF换行:*.sh text eol=lf - 检查KMM模块的Gradle配置,确保生成CocoaPods脚本时使用LF格式换行。
- 在项目根目录创建或修改
内容的提问来源于stack exchange,提问作者Mahdi Rida
相关产品推荐
相关产品推荐

