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

Jenkins流水线配置ANDROID_SDK_ROOT后仍提示未设置问题求助

问题分析与解决方法

核心问题排查

你的Jenkins流水线中ANDROID_SDK_ROOT未生效,主要有以下几个原因及对应修复方案:

1. 环境变量定义格式错误

Jenkins Pipeline的environment块中,字符串类型的变量值必须用引号包裹,否则会出现解析异常,导致变量未正确注入环境。

修复后的环境变量配置:

environment {
  ANDROID_SDK_ROOT = "/var/home_jenkins/Android/sdk"
  ANDROID_HOME = "/var/home_jenkins/Android/sdk" // 兼容部分依赖ANDROID_HOME的旧工具链
}

2. 路径不匹配

从执行日志可见,你手动临时设置的路径是/var/jenkins_home/Android/sdk,但environment块中配置的是/var/home_jenkins/Android/sdk,两者路径不一致。请确认Docker容器内Android SDK的实际存放路径,统一所有配置中的路径值。

3. 环境变量未在Shell步骤中正确传递

Jenkins的sh步骤默认会隔离环境上下文,你可以通过显式导出变量或使用双引号让Jenkins替换变量的方式,确保Flutter能读取到配置:

修改后的构建步骤:

steps {
  echo "Building Flutter release"
  sh 'flutter channel stable'
  sh 'flutter upgrade --force'
  sh "flutter config --android-sdk ${ANDROID_SDK_ROOT}" // 用双引号传递流水线变量
  sh 'flutter doctor -v'
  sh 'flutter pub get'
  sh "export ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT} && export ANDROID_HOME=${ANDROID_HOME} && flutter build apk --release"
}

4. Docker容器内Flutter配置未持久化

每次构建会启动全新的Docker容器,临时执行flutter config --android-sdk的配置不会保留。建议将Flutter的Android SDK路径配置写入Docker镜像中,比如在镜像构建阶段执行:

flutter config --android-sdk /var/home_jenkins/Android/sdk

这样后续构建无需重复配置。

额外检查项

确保Docker容器内的Android SDK路径下存在完整的SDK文件,尤其是platform-tools、build-tools等核心目录,并且这些路径已添加到PATH环境变量中:

environment {
  ANDROID_SDK_ROOT = "/var/home_jenkins/Android/sdk"
  ANDROID_HOME = "/var/home_jenkins/Android/sdk"
  PATH = "$PATH:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/build-tools/34.0.0" // 替换为实际的build-tools版本
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:00:34