1. 安装

  • 添加 waydroid 官方源
1
curl -s https://repo.waydro.id | sudo bash
  • apt 安装 waydroid
1
sudo apt install waydroid -y

2. 初始化

默认点击应用图标,点击 download 下载 system.img 和 vendor.img 太慢了

这里选择手动下载

  • 下载 system.img 和 vendor.img

sourceforge 官网下载:https://sourceforge.net/projects/waydroid/files/images/

  • 解压 system.img 和 vendor.img 并放至指定目录
1
2
sudo cp system.img /etc/waydroid-extra/images
sudo cp vendor.img /etc/waydroid-extra/images
  • 初始化 waydroid
1
waydroid init -f

3. 安装 ARM 转译

初始化后可以正常使用 waydroid 但是还不能使用 arm 版的 app, 安装指令翻译工具 libhoudini(AMD CPU 可以安装 libndk)

  • 安装工具
1
2
#根据系统python版本修改,这里为3.10
apt install git python3.10-venv
  • 下载 waydroid-scrip
1
git clone https://github.com/openfde/waydroid_script
  • 进入下载得到的 waydroid_script 目录,安装
1
2
3
4
cd waydroid_script
python3 -m venv venv
venv/bin/pip install -r requirements.txt
sudo venv/bin/python3 main.py

交互选择:选择安卓版本 ➡️ 选择安装操作 ➡️ 空格选中libhoudini ➡️ 回车下载

4.设置网络

waydroid 容器是通过 waydroid0 虚拟网口进行访问外网的,将 waydroid0 的 nat 转发到我们实际上网的网卡 wlan0/eth0

1
2
3
4
5
6
7
8
9
10
11
12
13
#主机侧设置转发到有线网
sudo iptables -t nat -A POSTROUTING -s 192.168.240.0/24 -o enp3s0 -j MASQUERADE
sudo iptables -A FORWARD -i waydroid0 -o enp3s0 -j ACCEPT
sudo iptables -A FORWARD -i enp3s0 -o waydroid0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#容器侧设置一条默认路由
waydroid shell ip route add default via 192.168.240.1
#查看NAT链
iptables -t nat -L -v
#查看FORWARD 链
iptables -L FORWARD -v
#设置主机防火墙保存
apt install iptables-persistent
netfilter-persistent save

5. 共享文件夹

对于任何容器或虚拟系统而言,共享目录都是一个重要的功能,在 WayDroid 内也提供了一个轻松建立共享文件夹的机制,本文会概述如何对该功能进行快速的上手。

对于 WayDroid 而言,在进行初始化时会在 /var/lib/wadroid/images 内将文件系统和安全系统下载下来,然后首次运行时,会对 system.imgvendor.img 进行解压,具体路径为 ~/.local/share/waydroid

对于安卓系统而言,一般的 Download、Movies 等目录会存放在 Data 目录下面,可以通过命令 sudo ls ~/.local/share/waydroid/data/media/0/ 查看目录结构的相信信息,然后安装下方的命令将本机的文件夹挂载到 WayDroid 的目录下,在完成挂载之后,宿主机和 WayDroid 容器之间就可以分享文件了。

1
2
3
4
5
6
#示例:
sudo mount --bind ~/Documents ~/.local/share/waydroid/data/media/0/Documents
sudo mount --bind ~/Downloads ~/.local/share/waydroid/data/media/0/Download
sudo mount --bind ~/Music ~/.local/share/waydroid/data/media/0/Music
sudo mount --bind ~/Pictures ~/.local/share/waydroid/data/media/0/Pictures
sudo mount --bind ~/Videos ~/.local/share/waydroid/data/media/0/Movies

或者,你也可以直接将内部存储挂载到主机上的目标文件夹,使用 bindfs 设置用户为所有已挂载文件的所有者(原始所有者权限保留在源文件夹中)。

1
2
sudo mkdir /mnt/waydroid
sudo bindfs --mirror=$(id -u) ~/.local/share/waydroid/data/media/0 /mnt/waydroid

6 .常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#开启多窗口(应用小窗模式)
waydroid prop set persist.waydroid.multi_windows true
#设置启动窗口大小
waydroid prop set persist.waydroid.width 0-9999
waydroid prop set persist.waydroid.height 0-9999
#编辑waydroid配置文件
sudo vim /var/lib/waydroid/waydroid.cfg
#容器启动与关闭
sudo systemctl start waydroid-container
sudo systemctl stop waydroid-container
#会话启动与关闭
waydroid session start
waydroid session stop
#app安装
waydroid app install xxx.apk
#scrcpy连接waydoid(修改配置文件默认开启adb)
scrcpy -s 192.168.240.112
#设置代理(主机代理软件允许局域网连接)
adb shell settings put global http_proxy "192.168.240.1:10808"
#查看waydroid当前代理
sudo waydroid shell settings get global http_proxy
#测试代理是否成功,得到一堆回复即成功
echo 'curl -vvv https://www.google.com -x 192.168.240.1:8049' | sudo waydroid shell
#清空当前代理
sudo waydroid shell settings put global http_proxy :0


#断开adb连接重启adb服务
adb disconnect 192.168.240.112:5555
adb kill-server
adb start-server
adb devices

7. 卸载 waydroid

  • 停止会话与容器
1
2
waydroid session stop
sudo waydroid container stop
  • 删除 waydroid
1
sudo apt remove --autoremove waydroid
  • 删除残余
1
sudo rm -rf /var/lib/waydroid ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid
  • 删除源和密钥文件来删除源存储库
1
sudo rm /etc/apt/sources.list.d/waydroid.list /usr/share/keyrings/waydroid.gpg