在 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 的顺序通常是:-
local.properties文件中的sdk.dir属性(项目级配置,优先级最高)。 -
ANDROID_HOME环境变量。 -
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(推荐的命令行工具路径)
-
-
作用: 虽然这不是 Android 特有的,但必须将 Android SDK 的工具目录添加到系统的
-
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 缓存迁移到其他磁盘分区,节省系统盘空间。
-
作用: 指定 Gradle 的全局缓存、配置文件和守护进程数据的存储位置(默认为
-
ANDROID_PREFS_ROOT(较少见):-
作用: 某些旧版工具可能用它来存储偏好设置,但现在大多统一到了
ANDROID_SDK_HOME(即~/.android) 目录下。
-
作用: 某些旧版工具可能用它来存储偏好设置,但现在大多统一到了
4. 2026 年最佳实践建议
- **设置 **
ANDROID_HOME: 始终设置此变量指向你的 SDK 根目录(例如D:\Android\Sdk或/Users/username/Library/Android/sdk)。 - **可选设置 **
ANDROID_SDK_ROOT: 为了兼容一些老旧脚本,可以将其设置为与ANDROID_HOME相同的值,但不要依赖它。 -
管理 AVD 路径: 如果 C 盘空间紧张,设置
ANDROID_AVD_HOME(或ANDROID_SDK_HOME) 到一个大容量磁盘,例如E:\Android\Avds。 - **配置 **
PATH: 确保将$ANDROID_HOME/platform-tools和$ANDROID_HOME/cmdline-tools/latest/bin加入系统PATH。 -
项目级配置: 记住,每个 Android 项目根目录下的
local.properties文件中的sdk.dir设置会覆盖环境变量,这在团队协作或不同机器间迁移项目时非常有用。
总结: 重点关注 ANDROID_HOME (SDK 路径) 和 ANDROID_AVD_HOME (模拟器路径),并将它们配置好。ANDROID_SDK_ROOT 可作为备选,而 ANDROID_AVD_ROOT 则无需再关注。