使用Android Sdkmanager手动安装Android SDK

需要Android SDK但不需要Android Studio?

下载Android命令行工具

https://developer.android.com/studio#command-tools

1.将解压缩后的文件夹更名为 latest

2.按照以下结构创建文件树,或参考这里

┌ android-sdk
│    ├ cmdline-tools
│    │     ├ latest
│    │     │     ├ bin
│    │     │     ├ lib
│    │     │     ├ NOTICE.txt
│    │     │     ├ source.properties

特别地,针对Flutter使用者,执行以下命令来移除 “[✗] Android toolchain” 的错误:

$ flutter doctor
...
[✗] Android toolchain
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
...

# 执行此命令以移除错误: [✗] Android toolchain
$ flutter config --android-sdk "/path/to/android-sdk"

3.使用sdkmanager安装SDK

如果不将 /path/to/android-sdk/cmdline-tools/latest/bin 加入系统环境($PATH),那么执行命令时需要带上完整的目录。下面执行的所有命令都已加入至$PATH变量中,读者可根据自身需要设置。

*列出已安装和可安装的 sdk/emulator/images 等等

$ sdkmanager --list
Installed packages:=====] 100% Computing updates...
  Path                 | Version | Description | Location
  -------              | ------- | -------     | -------
  cmdline-tools;latest | 6.0     | ...         | ...
  ...

Available Packages:
  Path     | Version      | Description
  -------  | -------      | -------
  ...

*安装sdk

$ sdkmanager "platform-tools" "platforms;android-30" "build-tools;30.0.3"
$ # OR
$ sdkmanager "platform-tools"
$ sdkmanager "platforms;android-30"
$ sdkmanager "build-tools;30.0.3"

*以同样的方式安装Android模拟器和镜像

$ sdkmanager "emulator"
$ sdkmanager "system-images;android-30;default;arm64-v8a"

sdkmanager用法参考:https://developer.android.com/studio/command-line/sdkmanager

命令行启动模拟器

1.列出是否有符合的镜像,没有的话应当检查~/.android/avd/*somefile*.ini文件

$ emulator -list-avds

  Pixel_3a_API_32_arm64-v8a

2.启动模拟器

$ emulator -avd Pixel_3a_API_32_arm64-v8a

若发生以下错误:

$ emulator -avd Pixel_3a_API_32_arm64-v8a
INFO    | Android emulator version 31.2.8.0 (build_id 8143646) (CL:N/A)
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
  • 检查 /path/to/android-sdk 下是否包含 emulator,system-images,platform-tools,platforms这四个文件夹

  • 检查 ~/.android/avd/*somefile*.avd/config.ini 文件,例如此处是:

    $ cat ~/.android/avd/Pixel_3a_API_32_arm64-v8a.avd/config.ini
    ...
    image.sysdir.1 = system-images/android-32/google-api/arm64-v8a/
    ...

    而 /path/to/android-sdk/ 的文件树结构是(仅针对我的电脑):

    ┌ android-sdk
    │    ├ system-images
    │    │     ├ android-30
    │    │     │     ├ default
    │    │     │     │     ├ arm64-v8a
    │    │     │     │     │
    │    │     │     │     │

    如果不想设置系统变量$ANDROID_SDK_ROOT,那么可以直接修改 image.sysdir.1属性,在本例中,它是:

      image.sysdir.1 = /path/to/android-sdk/system-images/android-30/default/arm64-v8a/

    参考:http://www.51ste.com/ask/answer-169.html