KMM项目iOS端在Xcode运行报错:Command PhaseScriptExecution失败
解决Xcode运行KMM iOS App时的Java Runtime找不到问题
问题详情
在Xcode中运行KMM项目的iosApp模块时,触发以下错误:
Command PhaseScriptExecution failed with a nonzero exit code
具体报错日志:
export variant\=normal /bin/sh -c /Users/Library/Developer/Xcode/DerivedData/iosApp-ftrrlcszyheexqhbvoqhhryktogx/Build/Intermediates.noindex/Previews/iosApp/Intermediates.noindex/iosApp.build/Debug-iphonesimulator/iosApp.build/Script-7555FFB5242A651A00829871.sh The operation couldn't be completed. Unable to locate a Java Runtime.Command PhaseScriptExecution failed with a nonzero exit code
已确认Java已安装,Android Studio中运行Android端正常,尝试过官方相关方案但未解决问题。
可行解决方案
1. 直接在Xcode脚本中指定Java路径
Xcode的Shell环境可能未加载正确的Java环境变量,可手动在出错脚本中指定:
- 打开终端,执行命令获取Java安装路径:
/usr/libexec/java_home - 复制输出的路径(示例:
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home) - 打开Xcode,进入项目Build Phases,找到报错的Script(对应
Script-7555FFB5242A651A00829871.sh),在脚本开头添加:export JAVA_HOME=/你的Java安装路径
2. 全局配置Java环境变量供Xcode读取
如果不想逐个修改脚本,可全局配置环境变量:
- 编辑
~/.zshrc或~/.bash_profile(根据你使用的Shell),添加:export JAVA_HOME=$(/usr/libexec/java_home) export PATH=$JAVA_HOME/bin:$PATH - 执行
source ~/.zshrc(或对应配置文件)使配置生效 - 重启Xcode后重新构建项目
3. 让Xcode使用正确的Shell环境
Xcode默认使用/bin/sh,可能不读取用户的Shell配置,可强制切换为常用Shell:
- 打开Xcode顶部菜单Xcode > Settings > Locations,确认Command Line Tools选择了当前使用的Xcode版本
- 终端执行命令切换默认Shell(以zsh为例):
chsh -s /bin/zsh - 重启Mac后再打开Xcode运行项目
4. 清理Xcode缓存后重新构建
- 执行Xcode菜单File > Clean Build Folder
- 终端执行命令删除DerivedData目录:
rm -rf ~/Library/Developer/Xcode/DerivedData - 重新构建项目
内容的提问来源于stack exchange,提问作者Jitendra Prajapati
相关产品推荐
相关产品推荐

