【Flutter 基础】 脱离 AS Ide 使用命令行创建虚拟机

这是我参与更文挑战的第3天,活动详情查看: 更文挑战

注:本文从个人公众号(岛前屿端)中迁移重新发布

Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作。


为什么要脱离 Android Studio Ide?

为什么我想着要脱离 Android Studio Ide 来写 Flutter?

因为,当所有 Android Studio Ide 的所需环境以及 SDK 安装完成后大概占用 6~8Gb 磁盘空间。
这对我来说,实在是 太!恐!怖!了!
所以我就开始尝试脱离 Android Studio Ide 只使用 VS Code 来开发 Flutter。
好在 Flutter 官方是支持 VS Code 的
具体配置和插件详见:flutterchina.club

如何用命令行创建 Android 虚拟机?

首先要保证 Android 命令是可用的,相关配置、命令、环境问题参考:【Flutter 基础】 脱离 AS Ide 使用命令行开发环境

但如果你要用命令行创建 Android 虚拟机的话,那就需要使用 sdkmanager 更新一下所需的支持包

# emulator 和 build-tools;29.0.0 (这里我以 29 为安卓版本为例)
sdkmanager "emulator" "build-tools;29.0.0"
复制代码

如果熟悉使用命令行的不会有太大问题,这里照顾一下不熟悉使用命令行又想装逼的朋友,简单解释一下

旧版本命令

创建一个 avd 虚拟机 (旧版本命令)

# -n 虚拟机名称
# -t targetID
android create avd -n tAndroid -t 1
复制代码

如何得到 targetID? 命令行 -> 输入 android list target 就会列出已下载在本地的 Android API 版本了

android list target
复制代码

旧版本的命令,如果执行的话就会报错了。并且告诉你 flag '-t' is not valid for 'create avd'. -t 的标记对创建 avd 无效。

image.png
(旧版本命令-执行错误)

现版本命令

那新命令要如何使用呢?基本上未变更太多
-t 标记变更为 -k 标记,-k 的标记就是说,将要使用哪个版本的系统镜像包和API

android create avd -n tAndroid -k 1
复制代码

创建虚拟机

如果之前你有下载了对应的系统 API (platforms;android-29) 的话,那么这条命令执行后会告诉你

需要:system-images;android-29;google_apis;x86_64,即安卓系统镜像以及相关 API

image.png
(命令提示缺少相关的镜像)

那么就来下载这个包

sdkmanager "system-images;android-29;google_apis;x86_64"
复制代码

下载完成后,再次执行命令,此时 -k 的参数为下载的镜像全名,别忘了双引号

android create avd -n tAndroid -k "system-images;android-29;google_apis;x86_64"
复制代码

这时候会问你是否需要创建自定义的硬件配置?默认是 [no] 直接回车就好,稍等一下虚拟机就配置完成了。
默认创建的虚拟机是全 API 支持,但是 屏幕宽度为 320pxdpr 为 1

稍等过后,虚拟机就创建完成了。

如何启动虚拟机

还记得一开始就要下载的支持包 emulator 吗?启动 Android 虚拟机 的话就需要使用它了。

不知道如何使用?OK,没问题。命令行 -> 输入 emulator,结果会告诉你使用 @虚拟机名称 或者 -avd 虚拟机名称。

emulator @tAndroid 
# or
emulator -avd tAndroid
复制代码

第一次启动大概率会遇到如下错误

image.png

不过不要着急,这时候还需要做一件事:

  1. 进入你配置的 SDK 文件夹的位置,找到 emulator 文件夹下的 emulator.exe,右键创建快捷方式。
  2. 然后剪切一下,在 SDK 文件夹下找到 tools 文件夹,进入右键粘贴。

然后你会发现这里也有一个 emulator.exe !!!这是什么情况?真假孙悟空?!

image.png

不要慌!!!只需要把原 emulator.exe 改名新 emulator.exe 快捷方式去掉

image.png

然后重新执行

emulator -avd tAndroid
复制代码

一定会遇到如下错误
image.png

WHPX & HAXM

大兄弟,你怎么又报错了?

WHPX 是什么?

HAXM 又是什么?

不要着急,仔细看提示:

使用 仿真 (虚拟机) 需要硬件加速
请确保 Windows 虚拟机监控程序平台 (WHPX) 已正确安装并可用
CPU加速状态:此计算机上未安装 硬件加速执行管理器 (HAXM)
如果您使用的是 Intel CPU:请检查BIOS中是否启用了虚拟化,以及 HAXM 是否已安装并可用
如果您使用 AMD CPU 或需要与基于 Hyper-V-based 的应用程序(如Docker)一起运行,我们建议您使用 Windows 系统管理程序平台

So,看完之后知道 WHPX & HAXM 是什么了么?

这时候只要下载 HAXM 支持包,以及在 BIOS 中开启主板虚拟化支持就可以解决问题啦!

google/bing/百度 一下你自己主板的虚拟化支持的选项在哪里,然后开启就 OK!

下载 HAXM 支持包

sdkmanager "extras;intel;Hardware_Accelerated_Execution_Manager"
复制代码

开启完成后,在你的SDK文件夹下找到 extras\intel\Hardware_Accelerated_Execution_Manager

双击安装即可 如果安装失败则是因为虚拟化支持未开启成功)

image.png

image.png

安装成功后,再次执行 -> emulator @tAndroid 稍作等待

emulator -avd tAndroid
复制代码

image.png
(启动虚拟机中)

激动人心的时刻就要到来了!

image.png

不要激动!虽然只是成功创建并启动了虚拟机而已。

但是,能否建立与开发项目的连接还是个问题。

执行如下设备检查命令

adb devices
复制代码
flutter devices
复制代码

image.png

两个都可以识别出来是 Android 虚拟机了,那么就可以使用虚拟机进行开发了

image.png

总结

  • 踩了坑就要一步一步记录下来,以便之后用来复盘过程。
  • 在出现问题的时候,千万不要惊慌,错误提示大多数时候都会明确告诉你发生了什么。
  • 学会并且合理使用搜索工具,能让你减少看到垃圾文章的几率。

前置阅读:【Flutter 基础】 脱离 AS Ide 使用命令行开发环境

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享