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

Xcode Cloud构建Kotlin Multiplatform应用提示找不到Java运行时

问题根因

这个问题不是苹果侧的限制导致,核心原因是Xcode Cloud做了构建阶段的环境隔离:
你在ci_post_clone.sh阶段安装JDK、配置的JAVA_HOME和PATH环境变量,仅在当前脚本的执行生命周期内有效。后续Xcode执行编译脚本(也就是报错的PhaseScriptExecution阶段)会启动全新的独立shell环境,不会继承你之前配置的Java路径,自然会抛出找不到Java运行时的错误。

可行解决思路

方案1:直接使用Xcode Cloud预装JDK(推荐,最省事)

Xcode Cloud的构建镜像本身已经预装了多个版本的OpenJDK,完全不需要你手动安装。只需要找到Xcode项目里调用Gradle的那段Run Script(也就是触发报错的构建阶段脚本),在脚本最开头主动指定JDK路径即可:

# 脚本最开头添加以下两行,指定使用JDK17
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH="$JAVA_HOME/bin:$PATH"

# 后面保留你原有的Gradle调用逻辑即可,比如KMP常用的./gradlew embedAndSignAppleFrameworkForXcode

这种方式省去了手动下载安装JDK的步骤,构建速度更快,稳定性也更高。

方案2:保留手动安装JDK的逻辑,显式传递路径

如果你因为版本原因必须手动安装指定的JDK版本,只需要把JDK路径持久化后在构建脚本里主动加载即可:

  1. 在你原有的ci_post_clone.sh脚本里,JDK安装完成后追加一行命令,把JDK路径写入工作区的固定文件:
# 原有JDK安装逻辑不变,安装完成后执行
/usr/libexec/java_home -v 17 > $CI_WORKSPACE/.java_home
  1. 同样在Xcode的Run Script构建阶段最开头,主动读取存储的JDK路径配置:
export JAVA_HOME=$(cat $SRCROOT/.java_home)
export PATH="$JAVA_HOME/bin:$PATH"

# 后续接原有的Gradle调用逻辑
踩坑提醒

不要尝试通过修改全局profile、launchctl写入全局环境变量的方式配置Java路径,Xcode Cloud的构建环境是沙盒化的,这类全局修改不会在后续构建阶段生效。

内容的提问来源于stack exchange,提问作者kaulex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:18:15