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
相关产品推荐
相关产品推荐

