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

CircleCI构建项目遇SDK位置未找到错误,同类方案无效求助

嘿,我之前在CircleCI上部署Android项目时也碰到过这个SDK找不到的坑,试过各种方法后总结了几个靠谱的解决思路,你可以挨个试试:

解决方案1:用CircleCI官方Android Orb(最省心)

CircleCI官方提供的Android Orb已经帮你封装好了SDK环境配置、依赖缓存这些繁琐的步骤,完全不用自己手动设置环境变量。你只需要修改.circleci/config.yml:

version: 2.1
orbs:
  android: circleci/android@2.0 # 建议使用最新版本的orb
jobs:
  build:
    executor: android/android-machine # 使用预配置好的Android执行器
    steps:
      - checkout
      - android/restore-gradle-cache # 缓存gradle依赖,加速后续构建
      - android/run-gradle:
          command: assembleDebug # 替换成你项目需要的gradle命令
      - android/save-gradle-cache

这个方案会自动帮你设置ANDROID_HOME,并安装对应版本的SDK组件,基本能解决90%的此类问题。

解决方案2:手动配置环境变量与SDK

如果你不想用Orb,也可以手动在构建配置里指定ANDROID_HOME并安装所需的SDK组件。注意要使用CircleCI官方的Android镜像,里面已经有基础的SDK结构:

version: 2
jobs:
  build:
    docker:
      - image: circleci/android:api-30 # 选择对应你项目的API版本镜像
    environment:
      ANDROID_HOME: /home/circleci/android/sdk # 镜像内默认的SDK路径
    steps:
      - checkout
      - run:
          name: 接受Android SDK许可证
          command: yes | sdkmanager --licenses
      - run:
          name: 安装所需SDK组件
          command: sdkmanager "platforms;android-30" "build-tools;30.0.3" # 替换成你项目需要的版本
      - run: ./gradlew assembleDebug
解决方案3:修复Gradle对SDK路径的依赖

很多本地开发会用local.properties设置sdk.dir,但绝对不要把这个文件提交到代码仓库——CircleCI的构建环境是干净的,不会有这个文件。你可以修改项目的Gradle配置,让它优先读取环境变量:
在项目根目录的build.gradle中添加:

if (System.getenv("ANDROID_HOME") != null) {
    android.sdkDirectory = file(System.getenv("ANDROID_HOME"))
}

这样Gradle会优先使用ANDROID_HOME环境变量指定的路径,而不是依赖本地的local.properties。

额外排查点
  • 确认你用的CircleCI镜像是否是官方Android镜像,不要用通用的Ubuntu镜像,否则需要从头安装SDK,步骤会复杂很多。
  • 检查你的Gradle版本和SDK版本是否兼容,版本不匹配也可能间接导致SDK路径识别失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:34:38