Android SDK 安装配置

Android SDK 可以通过 Android Command line tools(叫命令行工具或 SDK 工具)手动安装,也可以让 Android Studio 自动帮你下载安装,这里详细描述手动安装的方法。

官方网站为 https://developer.android.com/studio/command-line,当前(2020-08-19)最新版本为 v4.0.1。

1. 下载 zip 安装包

https://developer.android.com/studio#command-tools 选择适合平台的 zip 安装包:

  • Windows 选择 commandlinetools-win-6609375_latest.zip
  • macOS 选择 commandlinetools-mac-6609375_latest.zip
  • Linux 选择 commandlinetools-linux-6609375_latest.zip

以下以 Windows 平台为例,其它平台基本一致!

2. 解压安装

将下载的 commandlinetools-win-6609375_latest.zip 安装包解压,解压后目录结构如下:

D:\path-to\android-sdk\        # 按需自行调整安装到的目录
  └── tools
      ├── bin
      │   ├── apkanalyzer.bat  # 用于在构建过程完成后深入分析 APK 组成
      │   ├── avdmanager.bat   # 创建和管理 Android 虚拟设备 (AVD)
      │   ├── lint.bat         # 代码扫描工具,可帮助您识别和纠正代码结构质量方面的问题
      │   ├── screenshot2.bat
      │   └── sdkmanager.bat   # 查看、安装、更新和卸载 Android SDK 的软件包
      ├── lib
      │   └── ...
      ├── NOTICE.txt
      ├── package.xml
      └── source.properties

切换到命令行执行如下命令安装最新版的 cmdline-tools:

> cd D:\path-to\android-sdk\tools\bin
> sdkmanager --sdk_root=D:\path-to\android-sdk\ "cmdline-tools;latest"
License android-sdk-license:            ] 10% Computing updates...
---------------------------------------
...
---------------------------------------
Accept? (y/N): y # 输入 y 接受 License
[======                                 ] 17% Downloading commandlinetools-win-6
[=======================================] 100% Unzipping... tools/lib/README

参数 --sdk_root=D:\path-to\android-sdk\ 是非常关键的,必须精确指定。命令执行完毕后,将会新增如下目录:

D:\path-to\android-sdk\
  ├── cmdline-tools\latest\
  │   ├── bin
  │   │   ├── apkanalyzer.bat
  │   │   ├── avdmanager.bat
  │   │   ├── lint.bat
  │   │   ├── screenshot2.bat
  │   │   └── sdkmanager.bat
  │   ├── lib
  │   │   └── ...
  │   ├── NOTICE.txt
  │   ├── package.xml
  │   └── source.properties
  └── licenses
      └── android-sdk-license

android-sdk\cmdline-tools\latest 就是最新版的命令行工具,对!没有看错,它其实就是 android-sdk\tools 的最新版。此时 android-sdk\tools 目录也可以删除掉不再需要,或者留着以后用来更新 cmdline-tools。

3. 安装必须的 SDK 包

# 切换到新的 cmdline-tools 目录
$ cd android-sdk\cmdline-tools\latest

# 安装模拟器命令行工具
$ sdkmanager --install "emulator"

# 安装 platform-tools
$ sdkmanager --install "platform-tools"

4. 配置系统环境变量

  1. 创建系统环境变量 ANDROID_SDK_ROOT,指向上面的目录 D:\path-to\android-sdk\
  2. $ANDROID_SDK_ROOT\cmdline-tools\latest\bin 添加到系统环境变量 Path,使命令行可以直接执行 sdkmanager、avdmanager 命令。
  3. $ANDROID_SDK_ROOT\emulator 添加到系统环境变量 Path,使命令行可以直接执行 emulator 命令。
  4. $ANDROID_SDK_ROOT\platform-tools 添加到系统环境变量 Path,使命令行可以直接执行 adb、fastboot 命令。
  5. 创建系统环境变量 ANDROID_SDK_HOME,将默认的 $USER_HOME\.android 目录指向其它分区位置,如 D:\data\_android\ - 这是可选配置,但强烈建议设置一下。
  6. 创建系统环境变量 ANDROID_AVD_HOME,将默认的 $USER_HOME\.android\avd 目录指向其它分区位置,如 D:\data\_android\avd - 这是可选配置,但强烈建议设置一下。如果设置了 ANDROID_SDK_HOME 则必须设置这个,否则会创建模拟器成功,但启动模拟器说找不到路径。

更多 Android 环境变量的配置,请参考 官方文档的环境变量配置

配置完毕后,在任意目录重新打开新的 CMD 命令行,确认一下配置的正确性:

$ sdkmanager --version
4.0.1

$ emulator -version
Android emulator version 30.0.12.0 (build_id 6466327) (CL:N/A)
...

$ adb version
Android Debug Bridge version 1.0.41
Version 30.0.4-6686687
Installed as ...

$ fastboot --version
fastboot version 30.0.4-6686687
Installed as ...

看到上述输出的版本号信息就证明配置成功。

注意:如果不是将 cmdline-tools\latest\bin 而是直接将 tools\bin 添加到系统环境变量 Path,当执行 'sdkmanager --version' 命令时是会报如下错误的:

Warning: Could not create settings
java.lang.IllegalArgumentException
  at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
  at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
...

5. SDK 包的安装、更新与删除

命令行执行 "sdkmanager --list" 可以查看到所有已安装、可安装、可更新的包。如:

$ sdkmanager --list
Installed packages:=====================] 100% Computing updates...
  Path                 | Version | Description                             | Location
  -------              | ------- | -------                                 | -------
  cmdline-tools;latest | 2.1     | Android SDK Command-line Tools (latest) | cmdline-tools/latest/
  platforms;android-30 | 2       | Android SDK Platform 30                 | platforms/android-30/
  ...

Available Packages:
  Path               | Version | Description
  -------            | ------- | -------
  build-tools;30.0.2 | 30.0.2  | Android SDK Build-Tools 30.0.2
  ...

Available Updates:
  ID                   | Installed | Available
  -------              | -------   | -------
  platforms;android-30 | 2         | 3

安装新包:

# --install 参数是可选的
$ sdkmanager --install "$PACKAGE_PATH"  # 上面 `Available Packages` 中第一列 Path 的值就是 $PACKAGE_PATH

安装过程其实是 sdkmanager 通过网络下载相应包的压缩包,然后解压到相应的目录而已。故也可以从其它已经下载的电脑上复制过来,放到相应的目录即可。

更新已安装的包:

$ sdkmanager --update # 所有已安装的包如果有更新将全部更新到最新版

卸载已安装的包:

$ sdkmanager --uninstall "$PACKAGE_NAME"

自行将相应包所在的目录删除掉也可达到卸载的目的,效果是一样的。

有一些网站缓存了一些 SDK 的压缩包,直接下载有困难时可以灵活变通一下,自行从这些网站下载,然后解压到相应的 SDK 包目录即可:

6. 模拟器硬件加速配置

参考官方的详细文档《为 Android 模拟器配置硬件加速》。

从实用角度,这里简化挑选了 Intel CPU 和 AMD CPU 平台在 Windows 下的硬件加速方法。

只有安装了硬件加速,运行 x86 的模拟器时才能提高速度,否则会很慢。

6.1. Intel CPU 的模拟器硬件加速

Intel CPU 平台是使用 Intel HAXM 配置虚拟机加速的,操作步骤为:

  1. 主板 BIOS 需启用 CPU 的虚拟化支持(Intel 处理器的 VT-x 技术)。
  2. 在 "Windows 功能" 对话框中关闭 Hyper-V
  3. 执行如下命令下载 Intel HAXM:
    $ sdkmanager --install "extras;intel;Hardware_Accelerated_Execution_Manager"
    
  4. 运行刚下载的 "sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe" 文件,按向导完成安装。
  5. 验证安装:
    $ sc query intelhaxm
    SERVICE_NAME: intelhaxm
           ...
           STATE              : 4  RUNNING
           ...
    

如果使用 Android Studio,则只需打开 SDK 管理器,点击 "SDK Update Sites" 标签,然后选择 "Intel HAXM",点击 "OK" 等待下载完成。然后运行 "sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe" 文件,按向导完成安装。

6.2. AMD CPU 的模拟器硬件加速

AMD CPU 平台是使用 Android Emulator Hypervisor Driver for AMD Processors 配置虚拟机加速的,操作步骤为:

  1. 主板 BIOS 需启用 CPU 的虚拟化支持(AMD 处理器的 Secure Virtual Machine (SVM) 技术)。

  2. 在 "Windows 功能" 对话框中关闭 Hyper-V

  3. 从 Android Emulator Hypervisor Driver for AMD Processors 的 Github 发布地址 下载最新版的压缩包,如 gvm-windows_v1_6_0.zip

  4. 解压 gvm-windows_v1_6_0.zip 文件后,以管理员身份执行其中的 silent_install.bat 即可。

    # 1. 安装
    $ silent_install.bat
    
    SERVICE_NAME: gvm
            TYPE               : 1  KERNEL_DRIVER
            STATE              : 4  RUNNING
                                    (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
            WIN32_EXIT_CODE    : 0  (0x0)
            SERVICE_EXIT_CODE  : 0  (0x0)
            CHECKPOINT         : 0x0
            WAIT_HINT          : 0x0
            PID                : 0
            FLAGS              :
    
    # 2. 验证1
    $ sc query gvm
    SERVICE_NAME: gvm
            TYPE               : 1  KERNEL_DRIVER
            STATE              : 4  RUNNING
                                    (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
            WIN32_EXIT_CODE    : 0  (0x0)
            SERVICE_EXIT_CODE  : 0  (0x0)
            CHECKPOINT         : 0x0
            WAIT_HINT          : 0x0
    
    # 3. 验证2
    $ emulator -accel-check
    accel:
    0
    GVM (version 1.6) is installed and usable.
    accel
    

    看到上面的信息就安装成功了,如果要卸载,则在关闭所有 x86 模拟器后,执行如下命令:

    $ sc stop gvm
    $ sc delete gvm
    

如果使用 Android Studio,则只需打开 SDK 管理器,点击 "SDK Tools" 标签页,然后选择 "Android Emulator Hypervisor Driver for AMD Processors",点击 "OK" 即可自动下载安装。

7. 创建并运行一个模拟器的例子

以 Android-8.1(API Level 27)开发为例。

7.1. 安装 Android-8.1 编译构建工具

$ sdkmanager --install "build-tools;27.0.3" "platforms;android-27"

完成后,会多出如下两个目录:

  • $ANDROID_SDK_ROOT\build-tools\27.0.3\
  • $ANDROID_SDK_ROOT\platforms\android-27\

7.2. 安装 Android-8.1 模拟器镜像

下载一个 Android-8.1 的 x86 64 位模拟器镜像:

$ sdkmanager --install "system-images;android-27;default;x86_64"

完成后,会多出如下目录:

  • $ANDROID_SDK_ROOT\system-images\android-27\default\x86_64\

7.3. 创建 Android-8.1 模拟器

使用上面下载的镜像创建一个模拟器:

$ avdmanager create avd --name API_27_x86_64 --package "system-images;android-27;default;x86_64"
Do you wish to create a custom hardware profile? [no] 

也可以使用简写参数 -n 代替 --name、 -k 代替 --package,如:
$ avdmanager create avd -n API_27_x86_64 -k "system-images;android-27;default;x86_64"

完成后,会多出所创建的模拟器对应的配置文件和目录:

  • $ANDROID_AVD_HOME\API_27_x86_64.ini - 模拟器配置文件
  • $ANDROID_AVD_HOME\API_27_x86_64.avd\ - 模拟器磁盘镜像等文件所在的目录

创建后可以通过如下命令查看已创建的模拟器信息:

$ avdmanager list avd
Available Android Virtual Devices:
    Name: API_27_x86_64
    Path: D:\data\_android\avd\API_27_x86_64.avd
  Target: Default Android System Image
          Based on: Android 8.1 (Oreo) Tag/ABI: default/x86_64
  Sdcard: 512 MB

7.4. 运行 Android-8.1 模拟器

# 命令格式为 'emulator -avd $AVD_NAME' 或 '$ emulator @AVD_NAME'
$ emulator -avd API_27_x86_64
...

如果没有配置 x86 模拟器的硬件加速,可能会启动失败。启动后,这个模拟器的界面效果如下:

android-emulator-api27.png