You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:32:16