Waydroid安装教程:在Linux上无缝运行Android应用
项目简介
Waydroid是Linux上提供安卓运行环境的一个高效解决方案:https://waydro.id
Waydroid是什么:Waydroid是一个基于LXC(Linux Containers)和QEMU的Android模拟器系统,允许在Linux上无缝运行Android应用和游戏。
技术背景:Waydroid利用Linux命名空间(如用户、PID、UTS、网络、挂载点和IPC)来运行一个完整的Android系统,并通过容器化技术提供高效的运行环境。
项目特点:
- 高效:基于LXC的架构设计,启动速度快,资源占用低。
- 兼容性:支持最新Android版本,兼容大多数应用。
- 硬件直通:支持直接访问主机硬件资源。
- 多窗口模式:尤其适合Wayland桌面环境。
技术特点:
- LXC与QEMU结合:LXC提供容器隔离,QEMU负责硬件仿真。
- KVM支持:对于高性能硬件,支持KVM以提升性能。
- 开源社区驱动:Waydroid是一个开放源代码项目,社区开发者共同参与。
为什么是Waydroid:
性能方面
- 容器技术优势:Waydroid采用LXC容器技术,相比Anbox的架构,启动速度更快,资源占用更少,尤其是在内存管理方面有显著优势,即使在较低配置的机器上也能流畅运行多个Android应用。
- 硬件直通优化:Waydroid更好地利用了主机的硬件资源,支持KVM,可进一步提升性能,实现接近原生的速度。而Anbox在硬件加速兼容性方面较差,开启硬件加速的情况下,部分应用可能出现点击无反应等问题。
兼容性方面
- 支持架构广泛:Waydroid支持ARM、ARM64、x86、x86_64等多种架构,而Anbox对ARM架构的支持有限,只能运行x86的APK,通过修改增加ARM支持也比较麻烦。
- 应用兼容性更好:Waydroid兼容大多数Android应用,能运行最新版本的Android系统,而Anbox的兼容性一般,部分应用会出现闪退、无法输入中文等问题。
用户体验方面
- 多窗口模式:Waydroid支持多窗口模式,可以更好地在Linux桌面环境中与其他应用交互,而Anbox在这方面相对欠缺。
- 无缝集成:Waydroid安装后,Android应用将自动添加到Linux的应用菜单中,与Linux应用一起显示,极大地方便了跨平台使用。
开源与社区
Waydroid是一个完全免费的开源项目,代码托管在GitHub上,用户可以随时查看、贡献代码,或者根据需要修改源代码。虽然Anbox也是开源的,但其开发活跃度和社区支持不如Waydroid。
部署方法
准备工作
- 操作系统:确保使用基于GNU/Linux的系统,如Ubuntu
- 硬件要求:支持x86_64架构的CPU(Intel/AMD),支持Intel或AMD的GPU(NVDIA的GPU支持不佳)
- 依赖安装:安装必要的依赖包,如
lxc
、python3
、adb
- 显示服务:要求使用Wayland环境,至少要求安装Wayland运行环境(没有Wayland环境的似乎可以用weston代替,请自行研究)
安装依赖
以Debian系为例,使用以下命令安装依赖:
sudo apt update
sudo apt install lxc python3 adb
安装Waydroid
curl https://repo.waydro.id | sudo bash
sudo apt install waydroid -y
提示
Waydroid已经内置于绝大多数发行版的软件源,其他发行版也可直接使用系统包管理器安装
初始化Waydroid
在命令行里输入 sudo waydroid init
或者在程序列表中选择Waydroid打开初始化向导:

基本信息如上填写:
- System OTA : https://ota.waydro.id/system
- Vendor OTA : https://ota.waydro.id/vendor
- Android Type : 可选VANILLA和GAPPS,前者是没有谷歌框架的版本,后者预装了谷歌框架,按需选择
然后点击下载(Download)按钮便会开始下载系统镜像,默认使用sourceforge,下载速度可能比较缓慢,下载完成后右侧会出现完成(Done)的按钮,点击后就会启动容器,就可以使用安卓系统了。
一些额外配置
以下列举了一些常见问题,来自于官方文档:https://docs.waydro.id/
网络连接
首次启动Waydroid后会发现容器内没有网络连接,因为宿主机的防火墙拦截了网络流量,因此我们需要设置iptables转发规则和防火墙规则:
# 设置iptables
# 检查FORWARD策略是否为DROP
iptables --list-rules | grep FORWARD
# 如果发现有 -P FORWARD DROP 一行,说明iptables拦截了转发流量,用下面行解除拦截
iptables -P FORWARD ACCEPT
# 保存iptables规则
iptables-save > /etc/sysconfig/iptables
# 如果 /etc/sysconfig/iptables 文件不存在,需要安装iptables-services软件包
sudo dnf install iptables-services
# 设置防火墙规则
# ufw用户使用以下命令开放对应端口
sudo ufw allow 53
sudo ufw allow 67
sudo ufw default allow FORWARD
# firewalld用户使用以下命令开放端口
firewall-cmd --zone=trusted --add-interface=waydroid0
窗口管理
#为窗口增加可控制的最大、最小化和关闭按钮
waydroid prop set persist.waydroid.multi_windows true
#为窗口设置初始化大小,设置为两个双引号为默认
waydroid prop set persist.waydroid.width 3440
waydroid prop set persist.waydroid.height 1440
waydroid prop set persist.waydroid.width “”
waydroid prop set persist.waydroid.height “”
#避免在kde上出现多个鼠标指针
waydroid prop set persist.waydroid.cursor_on_subsurface true
安装ARM转译器(libhoudini)
安装waydroid_script
:
克隆项目:
git clone https://github.com/casualsnek/waydroid_script cd waydroid_script
创建虚拟环境并安装依赖:
创建虚拟环境并安装所需依赖:
python3 -m venv
venv
./venv/bin/pip install -r requirements.txt
安装libhoudini:
使用脚本安装libhoudini:
sudo venv/bin/python3 main.py install libhoudini
重启Waydroid服务:
重启Waydroid容器以使更改生效:
sudo systemctl restart waydroid-container
总结
Waydroid为Linux用户提供了在桌面环境中运行Android应用的高效解决方案。无论是开发者还是普通用户,都可以通过Waydroid体验到无缝的Android运行环境。