ANDROID_HOME、ANDROID_SDK_HOME、ANDROID_SDK_ROOT、ANDROID_AVD_ROOT、ANDROID_AVD_HOME

在 Android 开发中,环境变量的正确配置是构建和运行项目的基础。随着 Android Studio 和 Gradle 插件的更新,某些变量的优先级和推荐用法也发生了变化。以下是针对您提到的几个核心环境变量的详细解释、现状(截至 2026 年)以及其他常用变量:

1. 核心环境变量详解

变量名 含义与作用 当前状态 (2026)
ANDROID_HOME 首选变量。指向 Android SDK 的根目录。Android Studio、Gradle 插件以及大多数命令行工具(如 adb, avdmanager)优先读取此变量来定位 SDK。 推荐使用。Google 官方文档和现代工具链首选此变量。
ANDROID_SDK_ROOT 备用变量。同样指向 Android SDK 的根目录。早期用于替代或补充 ANDROID_HOME 仍支持但非首选。如果未设置 ANDROID_HOME,工具会尝试读取此变量。但在同时设置两者时,ANDROID_HOME 通常具有更高优先级。不建议在新环境中仅依赖此变量。
ANDROID_SDK_HOME 易混淆变量不指向 SDK 安装目录! 它用于指定 Android 配置文件(如 repositories.cfg)和 AVD(模拟器)的存储目录。默认通常在用户主目录下的 .android 文件夹。 有效且常用。常用于将庞大的模拟器镜像文件(.android/avd)迁移到非系统盘以节省 C 盘空间。
ANDROID_AVD_HOME AVD 专用变量。专门用于覆盖默认的 AVD 存储位置(即 ~/.android/avd)。 有效。如果你希望将模拟器数据存放在特定位置,可直接设置此变量,其优先级高于 ANDROID_SDK_HOME 对 AVD 路径的影响。
ANDROID_AVD_ROOT 非标准/废弃变量。在官方文档和主流工具中极少使用或不再推荐。 基本废弃/不使用。应使用 ANDROID_AVD_HOME 或直接通过 ANDROID_SDK_HOME 控制。

2. 关于“废弃”与优先级的说明

  • 没有完全“废弃”但有了明确的首选: ANDROID_SDK_ROOT 并没有被彻底移除或标记为错误,但在官方文档和最佳实践中,ANDROID_HOME** 是被明确推荐的标准变量**。
  • 优先级规则: 大多数 Android 工具(包括 sdkmanager, adb, Android Studio)查找 SDK 的顺序通常是:
    1. local.properties 文件中的 sdk.dir 属性(项目级配置,优先级最高)。
    2. ANDROID_HOME 环境变量。
    3. ANDROID_SDK_ROOT 环境变量。
  • ANDROID_AVD_ROOT** 的状态:** 这个变量并不是官方标准的一部分,或者在很早期的版本中使用过,现在应完全使用 ANDROID_AVD_HOME

3. 其他常用的 Android 相关环境变量

除了上述几个,开发中还经常遇到以下变量:

  • PATH:
    • 作用: 虽然这不是 Android 特有的,但必须将 Android SDK 的工具目录添加到系统的 PATH 中,以便在任何终端窗口直接运行命令。
    • 需添加的路径:
      • $ANDROID_HOME/platform-tools (包含 adb, fastboot)
      • $ANDROID_HOME/tools/bin (包含 sdkmanager, avdmanager 等,注意新版 SDK 中 tools 目录结构有所变化,主要工具在 cmdline-tools 下)
      • $ANDROID_HOME/cmdline-tools/latest/bin (推荐的命令行工具路径)
  • JAVA_HOME** / **JDK_HOME:
    • 作用: 指向 Java Development Kit (JDK) 的安装目录。Android Studio 和 Gradle 强依赖 JDK。
    • 现状: Android Studio 2024/2025+ 通常内置了 JDK (称为 Embedded JDK),但在某些 CI/CD 环境或命令行构建中,仍需正确设置 JAVA_HOME。目前推荐使用 JDK 17 或更高版本。
  • GRADLE_USER_HOME:
    • 作用: 指定 Gradle 的全局缓存、配置文件和守护进程数据的存储位置(默认为 ~/.gradle)。
    • 用途: 常用于将庞大的 Gradle 缓存迁移到其他磁盘分区,节省系统盘空间。
  • ANDROID_PREFS_ROOT (较少见):
    • 作用: 某些旧版工具可能用它来存储偏好设置,但现在大多统一到了 ANDROID_SDK_HOME (即 ~/.android) 目录下。

4. 2026 年最佳实践建议

  1. **设置 **ANDROID_HOME: 始终设置此变量指向你的 SDK 根目录(例如 D:\Android\Sdk/Users/username/Library/Android/sdk)。
  2. **可选设置 **ANDROID_SDK_ROOT: 为了兼容一些老旧脚本,可以将其设置为与 ANDROID_HOME 相同的值,但不要依赖它。
  3. 管理 AVD 路径: 如果 C 盘空间紧张,设置 ANDROID_AVD_HOME (或 ANDROID_SDK_HOME) 到一个大容量磁盘,例如 E:\Android\Avds
  4. **配置 **PATH: 确保将 $ANDROID_HOME/platform-tools$ANDROID_HOME/cmdline-tools/latest/bin 加入系统 PATH
  5. 项目级配置: 记住,每个 Android 项目根目录下的 local.properties 文件中的 sdk.dir 设置会覆盖环境变量,这在团队协作或不同机器间迁移项目时非常有用。

总结: 重点关注 ANDROID_HOME (SDK 路径) 和 ANDROID_AVD_HOME (模拟器路径),并将它们配置好。ANDROID_SDK_ROOT 可作为备选,而 ANDROID_AVD_ROOT 则无需再关注。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容