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

Gitlab CI/CD流水线失败:无法下载源列表以构建APK

GitLab CI/CD中sdkmanager提示“Failed to download any source lists”的解决方法

常见原因

  • GitLab Runner环境无法访问Google官方SDK源
  • 环境变量ANDROID_HOME设置时机滞后,导致sdkmanager无法识别SDK根目录
  • 命令行工具目录结构配置错误
  • 缺少HTTPS证书验证所需依赖,导致无法建立安全连接

修复方案

方案1:使用预配置Android SDK的Docker镜像(推荐)

直接使用已包含Android SDK的镜像,省去手动安装步骤,避免环境配置错误:

image: bitnami/android-sdk:28

variables:
  ANDROID_COMPILE_SDK: "28"
  ANDROID_BUILD_TOOLS: "28.0.2"
  release: "android"
  release_notes: "orange-apk-release"
  notify: false

before_script:
  - chmod +x ./gradlew
  # 处理许可证验证
  - set +o pipefail
  - yes | sdkmanager --licenses
  - set -o pipefail

stages:
  - build
  - upload
assembleDebug:
  stage: build
  script:
    - ./gradlew assembleDebug
  artifacts:
    paths:
      - app/build/outputs/

upload-job:
  stage: upload
  before_script:
    - export INSTALL_DIR=$CI_PROJECT_DIR
    - curl -Ls https://github.com/testappio/cli/releases/latest/download/install | bash
  script:
    - $CI_PROJECT_DIR/ta-cli publish --api_token=$TESTAPPIO_API_TOKEN --app_id=$TESTAPPIO_APP_ID --release=$release  --apk=$CI_PROJECT_DIR/app/build/outputs/apk/debug/app-debug.apk --release_notes=$release_notes --notify=$notify --source="Gitlab"

方案2:手动修复SDK安装流程

如果必须手动安装SDK,调整before_script的执行顺序并添加必要配置:

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "28"
  ANDROID_BUILD_TOOLS: "28.0.2"
  release: "android"
  release_notes: "orange-apk-release"
  notify: false

before_script:
  # 安装依赖,包括证书验证工具
  - apt-get --quiet update --yes
  - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 ca-certificates
  # 提前设置环境变量,确保sdkmanager能识别SDK路径
  - export ANDROID_HOME=$PWD/android-sdk-linux
  - export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools/
  # 下载并解压命令行工具
  - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-8092744_latest.zip
  - unzip -d $ANDROID_HOME android-sdk.zip
  # 修复目录结构,适配sdkmanager要求
  - mkdir -p $ANDROID_HOME/cmdline-tools
  - mv $ANDROID_HOME/cmdline-tools $ANDROID_HOME/cmdline-tools/latest || true
  # 配置国内镜像(解决网络访问问题)
  - mkdir -p $ANDROID_HOME/.android
  - echo '### User Sources for Android SDK Manager' > $ANDROID_HOME/.android/repositories.cfg
  - echo 'https://mirrors.aliyun.com/android/repository/' >> $ANDROID_HOME/.android/repositories.cfg
  # 先更新sdkmanager本身
  - echo y | sdkmanager --update
  # 安装所需SDK组件
  - echo y | sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}"
  - echo y | sdkmanager "platform-tools"
  - echo y | sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}"
  # 处理Gradle脚本权限和许可证
  - chmod +x ./gradlew
  - set +o pipefail
  - yes | sdkmanager --licenses
  - set -o pipefail

stages:
  - build
  - upload
assembleDebug:
  stage: build
  script:
    - ./gradlew assembleDebug
  artifacts:
    paths:
      - app/build/outputs/

upload-job:
  stage: upload
  before_script:
    - export INSTALL_DIR=$CI_PROJECT_DIR
    - curl -Ls https://github.com/testappio/cli/releases/latest/download/install | bash
  script:
    - $CI_PROJECT_DIR/ta-cli publish --api_token=$TESTAPPIO_API_TOKEN --app_id=$TESTAPPIO_APP_ID --release=$release  --apk=$CI_PROJECT_DIR/app/build/outputs/apk/debug/app-debug.apk --release_notes=$release_notes --notify=$notify --source="Gitlab"

关键修改说明

  1. 提前设置ANDROID_HOME和PATH,确保sdkmanager能正确识别SDK根目录
  2. 添加ca-certificates依赖,解决HTTPS证书验证失败问题
  3. 配置国内镜像源,绕过Google源的网络访问限制
  4. 先执行sdkmanager --update,确保工具本身版本兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:16:07