Waydroid 是 Linux 下使用容器技术运行 Android 的一个产品。它有点像 Docker 而不是 Virtual Box。官方针对各种 Linux 发行版的安装文档在 https://docs.waydro.id/usage/install-on-desktops 可以找到。
安装 Waydroid 成功后,再下载需要的 Android 映像,之后就可以启动 Android 了。要向 Android 中安装 apk 的话,可以使用 waydroid app install
命令。要是想在 Android 内部执行命令(非 GUI 应用),则可以使用 sudo waydroid shell
。这样的用法,看上去又和 adb 类似。
第一个要解决的问题是 Play Store,要执行这些命令(信息源:https://github.com/casualsnek/waydroid_script):
- 前提:
sudo apt install lzip sqlite
- 安装 OpenGapps:
git clone https://github.com/casualsnek/waydroid_script
cd waydroid_script
sudo python3 -m pip install -r requirements.txt
,这是安装此脚本工具所需的依赖sudo python3 main.py -g
,这是安装 OpenGappswaydroid show-full-ui
,启动 Android,请等待完全启动就绪sudo python3 main.py -i
,获取 Android ID 以便注册设备
笔者在获取 Android ID 时遇到了错误,命令行执行后一直报以下信息:
ERROR: Cannot access gservices.db, make sure gapps is installed and waydroid was started at least once after installation and make sure waydroid is running !
所以只好自己再去寻找答案,找到 https://github.com/waydroid/waydroid/issues/753,其中提到可以执行 sudo grep android_id ~/.local/share/waydroid/data/data/com.google.android.gms/shared_prefs/Checkin.xml | cut -f2 -d">" | cut -f1 -d"<"
。后来发现,其实也可以在 waydroid shell 中执行 sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"
获取到。
然后用浏览器打开 https://www.google.com/android/uncertified/?pli=1,使用 Google 账户登录后,把上面取得的 Android ID 填进去进行注册。注册成功后,在命令行执行 sudo waydroid session stop
以确保 Waydroid 完全退出,然后重新启动 Waydroid。此时再打开 Play Store 应用,就可以像正常手机上那样登录,并下载安装应用了。
笔者另外还遇到了 Waydroid 内的 Android 网络不通的情况,折腾 Wi-Fi 连接许久无果,后来的某次重启系统后,Waydroid 内的 Android 突然以有线连接的方式联网了,就这么将就着往下用了。