Waydroid是一款可以在linux体内跑android的容器。不同于虚拟机,它利用容器化技术直接在Linux启动android系统,性能比虚拟机要好得多。目前仅支持Wayland session. 但通过在X session中使用一些compositor也能跑起来。

顺便说下,waydroid数据目录:/home/yychi/.local/share/waydroid/data.

使用指南主要参考archwiki.

  • 与host共享文件夹,参考此处
  • 安装smartdock(一个类似桌面端的launcher)

Troubleshooting

Android容器内无网络

Note

Android内部快捷菜单中的wifi按钮开关是假的,没有任何意义。即,无论它的状态是啥跟容器内部有无网络连接无关!

  • 确保开启iptables和dnsmasq,使用systemctl status <xxx>查看状态
  • /usr/lib/waydroid/data/scripts/waydroid-net.sh脚本配置问题,参考这个issue

Arm安装包安装失败

由于waydroid的架构和宿主(host)一致,一般是x86_64. 所以为arm架构编译的apk会安装失败。可以尝试casualsnek的脚本1

这里仅提两个坑点:

  • 上面的脚本指导使用python虚拟环境安装依赖包,但是他又要调用waydroid的系统脚本(依赖dbus-python),而且还要sudo权限,sudo完之后很多包会找不到,不如一开始就用系统环境用sudo安装依赖。
  • 大陆用户可能受网络问题困扰,终端设置ALL_PROXY不再生效,可能是request包不读这个环境变量。我的做法是,直接浏览器下载好放到指定位置,改改代码跳过校验md5,直接安装。

References

  1. Script to start Android LineageOS with Waydroid in an X11 session
  2. No internet in waydroid

Footnotes

  1. 这里参考archwiki.