使用 VSCode 的 AVD Manager 扩展来启动 Android Emulator 并管理 SDK 包

使用 VSCode 的 AVD Manager 扩展来启动 Android Emulator 并管理 SDK 包
Mus安装扩展到 VSCode
VSCode 自用扩展分享(持续更新)详见: VSCode 自用扩展分享(持续更新)。
扩展下载地址,请看:AVD Manager - Visual Studio Marketplace。
先决条件
需要下载 commandlinetools 并配置好 ANDROID_HOME。
commandlinetools 推荐在官网下载,地址:下载 Android Studio 和应用工具 - Android 开发者 | Android Developers。

下载好后放到任意位置,这里我就放在 D:\Env\Android-SDK 了。
如果你此时进入到 D:\Env\Android-SDK\cmdline-tools\bin 目录,尝试运行命令 .\sdkmanager.bat --list_installed 时会发现,它报错了。

这是因为 Error: Could not determine SDK root. 意思是无法确定 SDK 的根目录,也就是 <sdk>。
怎么配置 <sdk> 呢?
在 cmdline-tools 文件夹内,新建一个名为 latest 的文件夹,并把文件移动到 latest 里。

那么 D:\Env\Android-SDK 目录就是 <sdk> 了,请记住它,下面会用到。
此时如果你再尝试运行 .\sdkmanager.bat --list_installed 时,你就会发现能够正常运行了。(图就不贴了)
配置 ANDROID_HOME
由于我们要使用的 AVD Manager 扩展需要读取 SDK Root Path 也就是 <sdk>,才能够正常使用,它会去找 ANDROID_HOME 环境变量来读取,如果没有,它会报错,除非你手动给它配置。为了方便使用,再加上官方其实也是建议配置 ANDROID_HOME 环境变量到系统中,所以这里我们一举两得,配置一下吧。
官方的建议,详见官方文档:命令行工具 | Android Studio | Android Developers。
这里我就配置到用户变量里了。
关于系统环境变量和用户环境变量的区别,请看: 简谈 Windows 的环境变量以及用户变量与系统变量的区别
配置的变量名为 ANDROID_HOME 值为 <sdk> (即:刚刚 commandlinetools 的目录)

由于我们每次要使用这些命令都要到 <sdk>\cmdline-tools\latest\bin 中运行,太麻烦了,故我们把它加入到 Path 变量中。
刚刚我们配置了 ANDROID_HOME 变量,所以这里直接引用它就行了。
在 Path 变量里添加上 %ANDROID_HOME%\cmdline-tools\latest\bin,以便能够在任何位置使用其中的命令。
配好之后,此时你在任意位置打开终端都是能够使用 sdkmanager 命令的。
配置 AVD Home
默认情况下创建 avd,它的路径会在 C:\Users\用户名\.android\avd 中,这会占用我们的 C 盘空间。
所以我们要为 AVD Manager 进行相应的配置。
打开扩展设置,如图。

在 Avd Home 中配置你想要自定义的目录。当然你也可以像我一样,在环境变量中设置这个变量,然后值就是你的目标目录。

OK,配完了。
使用
关于 AVD Manager 的使用,这块我感觉没啥可讲的。
如果你会用 Android Studio,或者 cmdline-tools,那么看到这个项的名字,我估计你也能大概知道它是干啥的了吧。
思来想去,我觉得唯一需要说的是,如果你想启动 avd,那么就得先下载 emulator。
它在 SDK TOOLS 里。
当然你也可以在使用VSCode在这里直接点击下载。
将 SDK 共享到 Android Studio
由于 AVD Manager 这部分内容的讲解已经很完善了,这里贴出它的链接地址。
需要的朋友请看:vscode-avdmanager/README-Setup.md at main · toroxx/vscode-avdmanager (github.com)。
虚拟机启动失败的解决办法
如果你在启动虚拟机时报类似 C:\Users\用户名\AppData\Local\Temp\\AndroidEmulator\emu-crash-xx.x.xx.db\attachments\xx-xx-xx-xx: 系统找不到指定的文件。 的错误,并且还不管怎么启动虚拟机都启动不起来。
那么这可能是与 OpenGL ES 渲染器有关。这块我之前就出过这样的问题,并且当时也困扰了我好几天,最后我向这个插件的作者寻求了帮助才解决了这个问题。
关于这个问题的解决方法,请看:https://github.com/toroxx/vscode-avdmanager/issues/12#issuecomment-2267559256。
完整的 Issues,请看:AVD startup failed · Issue #12 · toroxx/vscode-avdmanager (github.com)。



