环境变量

您可以通过设置环境变量来配置 Android Studio 和命令行工具的行为。其中一个最有用环境变量是 ANDROID_HOME,许多工具都会读取此变量以确定 Android SDK 安装目录。要从命令行运行工具而无需包含可执行文件的完整路径,请将您的命令搜索路径环境变量设置为包含 ANDROID_HOME/toolsANDROID_HOME/tools/binANDROID_HOME/platform-tools

如何设置环境变量

以下示例展示了如何在终端窗口和不同操作系统的 shell 脚本中设置环境变量。终端窗口中的变量设置仅在窗口打开时有效。在 macOS 和 Linux 上,每次启动新 shell 时,都会在 shell 初始化脚本中设置变量设置。在 Windows 上,可以通过系统设置设置变量设置。

Windows:在终端窗口中,键入以下内容

set HTTP_PROXY=myserver:1981

或者,通过 Windows UI 添加它。请查看您所用 Windows 版本的文档以了解操作方法。

macOS 和 Linux:设置环境变量的精确方法取决于您使用的 shell。要确定正在运行的 shell 类型,请键入以下内容

echo $0

Gnu BashZsh 等 shell 中,使用以下语法设置变量

export VARIABLE_NAME=<new-value>

在其他 shell(如 TCSH)中,使用以下语法设置变量

setenv VARIABLE_NAME <new-value>

这些命令可以添加到 shell 初始化脚本中,以便每次运行新 shell 实例时都设置变量。

shell 初始化脚本的位置取决于使用的 shell。对于 Gnu Bash,位置可以是 ~/.bash_profile。对于 Zsh,位置可以是 ~/.zprofile。对于 TCSH,位置可以是 ~/.cshrc。请查看您使用的 shell 的文档以确保。

您还可以更新 PATH 环境变量以包含工具位置。

对于 Gnu Bash 或 Zsh

export ANDROID_HOME=~/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools
  

以及对于 TCSH

setenv ANDROID_HOME ~/Library/Android/sdk
setenv PATH $PATH\:$ANDROID_HOME/tools\:$ANDROID_HOME/tools/bin\:$ANDROID_HOME/platform-tools
  

变量参考

下表描述了 Android SDK 工具常用的环境变量。

表 1. 环境变量

Android SDK 环境变量
ANDROID_HOME 设置 SDK 安装目录的路径。设置后,该值通常不会更改,并且可以在同一台计算机上的多个用户之间共享。ANDROID_SDK_ROOT 也指向 SDK 安装目录,但已弃用。如果您继续使用它,Android Studio 和 Android Gradle 插件将检查旧变量和新变量是否一致。
ANDROID_USER_HOME 设置 Android SDK 工具的用户首选项目录的路径。默认为 $HOME/.android/

一些较旧的工具(例如 Android Studio 4.3 及更早版本)无法读取 ANDROID_USER_HOME。要为这些较旧的工具覆盖用户偏好设置位置,请将 ANDROID_SDK_HOME 设置为您希望在其中创建 .android 目录的父目录。

REPO_OS_OVERRIDE 当您使用 sdkmanager 下载与当前机器不同的操作系统的软件包时,请将此变量设置为 windowsmacosxlinux
Android Studio 配置环境变量
Android Studio 配置变量包含自定义配置文件位置和 JDK 的设置。启动时,Android Studio 会检查这些变量以获取设置。有关更多信息,请参阅 配置 Android Studio
STUDIO_VM_OPTIONS 设置 studio.vmoptions 文件的位置。此文件包含影响 Java HotSpot 虚拟机性能特征的设置。也可以从 Android Studio 内部访问此文件。请参阅 自定义您的 VM 选项
STUDIO_PROPERTIES 设置 idea.properties 文件的位置。此文件允许您自定义 Android Studio IDE 属性,例如用户安装插件的路径和 IDE 支持的最大文件大小。请参阅 自定义您的 IDE 属性
STUDIO_JDK 设置 Android Studio 运行所在的 JDK 的位置。启动 IDE 时,它会按顺序检查 STUDIO_JDKJDK_HOMEJAVA_HOME 环境变量。
STUDIO_GRADLE_JDK 设置 Android Studio 用于启动 Gradle 守护进程的 JDK 的位置。启动 IDE 时,它首先检查 STUDIO_GRADLE_JDK。如果未定义 STUDIO_GRADLE_JDK,则 IDE 将使用在 项目结构设置 中设置的值。
模拟器环境变量
默认情况下,模拟器将配置文件存储在 $HOME/.android/ 下,并将 AVD 数据存储在 $HOME/.android/avd/ 下。您可以通过设置以下环境变量来覆盖默认值。emulator -avd <avd_name> 命令按 $ANDROID_AVD_HOME$ANDROID_USER_HOME/avd/$HOME/.android/avd/ 中值的顺序搜索 avd 目录。

有关模拟器环境变量的帮助,请在命令行中键入 emulator -help-environment。有关 emulator 命令行选项的信息,请参阅 从命令行启动模拟器

ANDROID_EMULATOR_HOME 设置用户特定模拟器配置目录的路径。默认为 $ANDROID_USER_HOME

较旧的工具(例如 Android Studio 4.3 及更早版本)无法读取 ANDROID_USER_HOME。对于这些工具,默认值为 $ANDROID_SDK_HOME/.android

ANDROID_AVD_HOME 设置包含所有 AVD 特定文件的目录的路径,这些文件主要由非常大的磁盘映像组成。默认位置是 $ANDROID_EMULATOR_HOME/avd/。如果默认位置磁盘空间不足,您可能需要指定一个新位置。
Android 模拟器在启动时查询以下环境变量
ANDROID_LOG_TAGS 请参阅 ANDROID_LOG_TAGS
HTTP_PROXY

包含全局 HTTP 代理的 HTTP/HTTPS 代理设置。在主机和端口之间使用冒号 (:) 分隔符。例如,set HTTP_PROXY=myserver:1981

这与在从命令行运行模拟器时指定 -http-proxy proxy 参数相同。

ANDROID_VERBOSE 请参阅 ANDROID_VERBOSE
ANDROID_HOME 请参阅 ANDROID_HOME
ANDROID_EMULATOR_USE_SYSTEM_LIBS 包含值 0(默认值)或 1。值为 1 表示使用系统的 libstdc++.so 文件,而不是模拟器捆绑的文件。仅当模拟器由于系统库问题而无法在您的 Linux 系统上启动时,才设置此环境变量。例如,某些 Linux Radeon GL 驱动程序库需要更新的 libstdc++.so 文件。
快速模拟器 (QEMU) 音频
QEMU_AUDIO_DRV QEMU_AUDIO_OUT_DRV QEMU_AUDIO_IN_DRV 在 Linux 上,您可以通过将 QEMU_AUDIO_DRV 环境变量设置为以下值之一来更改模拟器的默认音频后端
  • alsa:使用高级 Linux 音频架构 (ALSA) 后端
  • esd:使用启发式声音守护进程 (EsounD) 后端
  • sdl:使用简单直接媒体层 (SDL) 音频后端(不支持音频输入)
  • oss::使用开放声音系统 (OSS) 后端
  • none::不支持音频
set QEMU_AUDIO_DRV=alsa

您还可以通过为 QEMU_AUDIO_OUT_DRVQEMU_AUDIO_IN_DRV 环境变量选择一个 QEMU 值来使用不同的音频输入和音频输出后端

set QEMU_AUDIO_OUT=esd
set QEMU_AUDIO_IN=oss

如果要禁用音频支持,请使用 emulator -no-audio 选项或将 QEMU_AUDIO_DRV 设置为 none。在以下情况下,您可能需要禁用音频

  • 在极少数情况下,音频驱动程序会导致 Windows 在模拟器运行时重新启动。
  • 在某些 Linux 机器上,模拟器在启用音频支持的情况下可能会在启动时卡住。
adb 环境变量
ANDROID_SERIAL 使用此变量向 adb 命令提供模拟器序列号(例如 emulator-5555)。如果您设置了此变量,但使用 -s 选项从命令行指定序列号,则命令行输入会覆盖 ANDROID_SERIAL 中的值。

以下示例设置 ANDROID_SERIAL 并调用 adb install helloworld.apk,然后在 emulator-5555 上安装 Android 应用程序包。

set ANDROID_SERIAL=emulator-555
adb install helloWorld.apk
adb logcat 环境变量
ANDROID_LOG_TAGS 使用此环境变量在从开发计算机运行 logcat 时设置默认筛选器表达式。例如
set ANDROID_LOG_TAGS=ActivityManager:I MyApp:D *:.

这与在从命令行运行模拟器时指定 -logcat tags 参数相同。

有关更多信息和示例,请参阅 筛选日志输出

ADB_TRACE 包含要记录的调试信息的逗号分隔列表。值可以是以下内容:alladbsocketspacketsrwxusbsyncsysdepstransportjdwp

要显示 adb 客户端和 adb 服务器的 adb 日志,请将 ADB_TRACE 设置为 all,然后调用 adb logcat 命令,如下所示

set ADB_TRACE=all
adb logcat
ANDROID_VERBOSE 包含模拟器使用的详细输出选项(调试标签)的逗号分隔列表。以下示例显示使用 debug-socketdebug-radio 调试标签定义的 ANDROID_VERBOSE
set ANDROID_VERBOSE=socket,radio

这与在从命令行运行模拟器时将 -verbose -verbose-socket -verbose-radio 参数一起指定相同。

不支持的调试标签将被忽略。有关调试标签的更多信息,请使用 emulator -help-debug-tags