GitLab流水线执行fastlane build_apk失败,Android SDK组件安装异常
解决GitLab流水线构建React Native Android APK失败的问题
核心问题分析
当前报错的关键原因有两个:
- GitLab CI变量中的Android SDK版本配置被注释,导致
ANDROID_COMPILE_SDK和ANDROID_BUILD_TOOLS未定义,安装SDK组件时无法定位到正确版本 - Android命令行工具的路径结构配置不符合新版规范,导致
sdkmanager无法正确解析组件依赖
具体修复步骤
1. 启用并修正CI变量配置
打开你的gitlab.config.yml,取消注释并修正Android SDK相关变量,确保指定报错中要求的build-tools;30.0.3:
variables: LANG: "en_US.UTF-8" ANDROID_COMPILE_SDK: "30" # 对应build-tools 30.0.3的编译SDK版本 ANDROID_BUILD_TOOLS: "30.0.3" # ANDROID_SDK_TOOLS: "9477386" # 可保留注释,当前下载的是最新版命令行工具 SECURE_FILES_DOWNLOAD_PATH: './' ANDROID_KEYSTORE_FILE: '/builds/X/app/android/my-upload-key.keystore'
2. 调整Android命令行工具的路径结构
新版Android命令行工具要求目录结构为cmdline-tools/latest,修改before_script中的解压和路径配置部分:
- export ANDROID_SDK_ROOT="${PWD}/android-home" - install -d $ANDROID_SDK_ROOT - wget --output-document=$ANDROID_SDK_ROOT/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip - pushd $ANDROID_SDK_ROOT - unzip -d cmdline-tools cmdline-tools.zip - pushd cmdline-tools - mv cmdline-tools latest # 改为符合规范的latest目录 - popd - popd - export PATH=$PATH:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/ # 更新PATH指向latest/bin
3. 修正SDK组件安装命令
调整sdkmanager安装命令,移除不必要的--include_obsolete(除非确实需要旧版组件),并确保命令顺序合理:
# 接受所有许可证 - yes | sdkmanager --licenses # 先安装平台组件 - sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" # 安装平台工具 - sdkmanager "platform-tools" # 安装指定版本的Build Tools - sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}"
4. 优化Fastlane构建任务(可选)
确保Fastlane的build_apk任务使用正确的编译配置,若项目的build.gradle中指定了compileSdkVersion为30,无需修改;如果需要统一版本,可在gradle参数中明确指定:
lane :build_apk do |options| gradle( task: "assemble", build_type: "Release", properties: { "android.compileSdkVersion" => ENV["ANDROID_COMPILE_SDK"], "android.buildToolsVersion" => ENV["ANDROID_BUILD_TOOLS"] } ) end
验证步骤
修改完成后,重新触发GitLab流水线:
- 检查
sdkmanager --version是否正常输出版本号 - 确认
build-tools;30.0.3被成功安装(可在流水线日志中搜索该组件名) - 观察
fastlane build_apk阶段是否能正常完成gradle配置和编译
内容的提问来源于stack exchange,提问作者Wee Li
相关产品推荐
相关产品推荐

