一、前置检查

Waydroid 必须运行在 Wayland 会话下,X11 不支持。

# 检查当前会话类型
echo $XDG_SESSION_TYPE

输出应为 wayland。如果是 x11,需要注销后选择 "Ubuntu on Wayland" 登录。

同时检查内核是否支持 binder 驱动:

lsmod | grep binder

如果有输出(如 binder_linux),说明支持;否则可能需要安装 linux-image-generic 内核或手动加载模块。

在 Ubuntu 22.04 上,binder 驱动包含在 linux-modules-extra 包里,按下面步骤处理:

# 1. 安装对应内核版本的额外模块
sudo apt update
sudo apt install linux-modules-extra-$(uname -r) -y

# 2. 手动加载 binder 模块
sudo modprobe binder_linux

# 3. 确认加载成功
lsmod | grep binder

二、安装 Waydroid

binder 搞定后,继续安装 Waydroid

# 1. 添加仓库
curl -s https://repo.waydro.id | sudo bash

# 2. 安装
sudo apt install waydroid -y

# 3. 初始化(自动下载 LineageOS 镜像)
sudo waydroid init

# 4. 启动服务
sudo systemctl enable --now waydroid-container

# 5. 启动安卓界面
waydroid show-full-ui

# 挂载 binderfs(Waydroid 需要这个)
sudo mkdir -p /dev/binderfs
sudo mount -t binder none /dev/binderfs
#为了让 binder 在每次开机时自动加载,创建配置文件:
echo "binder_linux" | sudo tee /etc/modules-load.d/waydroid.conf

#把 Ubuntu 源换成可用的(阿里云)
# 1. 备份原配置
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 2. 替换清华源为阿里云源
sudo sed -i 's|https://mirrors.tuna.tsinghua.edu.cn/ubuntu|http://mirrors.aliyun.com/ubuntu|g' /etc/apt/sources.list
# 3. 更新
sudo apt update
# 如果 apt update 还有签名错误,直接重置为阿里云完整配置:
sudo tee /etc/apt/sources.list << 'EOF'
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
EOF

sudo apt update
# 1. 安装依赖
sudo apt update
sudo apt install curl ca-certificates -y

# 2. 添加 Waydroid 官方仓库
curl -s https://repo.waydro.id | sudo bash

# 如果自动检测失败,手动指定 Ubuntu 22.04 代号 jammy:
# curl -s https://repo.waydro.id | sudo bash -s jammy

# 3. 安装 Waydroid
sudo apt install waydroid -y

三、初始化(下载安卓镜像)

首次启动时会自动弹出初始化向导,也可手动执行:

# 初始化(自动下载 LineageOS 镜像,无 Google 服务)
sudo waydroid init

# 或带 Google Apps 的镜像(需要 GMS 时)
sudo waydroid init -g

国内网络下载镜像可能较慢,可以手动下载后放到指定目录,再执行 waydroid init -f 强制初始化。镜像下载地址:SourceForge Waydroid Images


手动下载后,把镜像放到指定目录再强制初始化即可。步骤如下:


1. 下载镜像

从 SourceForge 下载对应文件(用浏览器或 wget/aria2):

文件 下载地址
System 镜像(必需) lineage-20.0-20260403-VANILLA-waydroid_x86_64-system.zip
Vendor 镜像(可选,建议一起下) lineage-20.0-20260403-VANILLA-waydroid_x86_64-vendor.zip

国内下载慢可以用镜像站,或者找 Waydroid 镜像 GitHub 仓库 里的直链。


2. 放置镜像文件

# 创建目录
sudo mkdir -p /usr/share/waydroid-extra/images

# 把下载的 zip 文件复制进去(假设下载到了 ~/Downloads)
sudo cp ~/Downloads/lineage-20.0-*-system.zip /usr/share/waydroid-extra/images/
sudo cp ~/Downloads/lineage-20.0-*-vendor.zip /usr/share/waydroid-extra/images/

3. 强制初始化(从本地读取)

sudo waydroid init -f

-f 参数会让 Waydroid 优先检查 /usr/share/waydroid-extra/images/ 目录,找到匹配的 zip 后直接使用,不再联网下载。


4. 启动

sudo systemctl enable --now waydroid-container
waydroid show-full-ui

如果 waydroid init -f 还是报错,也可以手动解压到工作目录:

cd /usr/share/waydroid-extra/images/

# 解压 system
sudo unzip lineage-20.0-20260403-VANILLA-waydroid_x86_64-system.zip

# 解压 vendor
sudo unzip lineage-20.0-20260428-MAINLINE-waydroid_x86_64-vendor.zip

# 确认 img 文件已生成
ls -lh *.img

然后直接启动容器即可,无需再执行 init

四、启动 Waydroid

# 启用并启动容器服务
sudo systemctl enable --now waydroid-container

# 启动完整安卓界面
waydroid show-full-ui

首次启动可能需要几秒到几十秒。默认是全屏无边框窗口,可以用以下方式调整:

# 修改窗口大小(例如手机比例)
waydroid prop set persist.waydroid.width 506
waydroid prop set persist.waydroid.height 1000

# 重启会话生效
waydroid session stop

移动窗口方法:按住 Super(Windows 徽标键)拖动,或按 Alt+F7 后移动鼠标。

注意事项

  1. 架构兼容:确保 APK 包含 x86_64 架构的 so 库,否则可能闪退。纯 ARM 应用需要安装 libhoudinilibndk_translation 转译层。
  2. 安装后找不到图标:部分 APK 安装后不会自动出现在 Ubuntu 应用菜单,用 waydroid app list 查看包名,然后 waydroid app launch <包名> 启动。
  3. 需要 Google 服务:VANILLA 镜像不带 GMS,某些应用会崩溃。可以通过 waydroid_script 安装 microG 或 OpenGapps。

五、安装安卓应用(APK)

# 安装 APK(从主机侧)
waydroid app install ~/Downloads/xxx.apk

# 查看已安装应用列表
waydroid app list
# 启动指定应用
waydroid app launch com.example.appname
# 卸载应用
waydroid app remove com.example.appname
# 进入 Waydroid shell,用 --user 0 卸载系统预装应用:
sudo waydroid shell
pm uninstall --user 0 org.lineageos.jelly
# 如果提示 DELETE_FAILED_INTERNAL_ERROR,说明是系统核心应用无法直接卸载,可以禁用它
pm disable-user --user 0 org.lineageos.jelly

安装的应用会自动在 Ubuntu 的应用菜单中创建快捷方式,可以直接搜索启动。

架构不兼容

你的 Waydroid 是 x86_64 架构,如果 APK 只有 ARM 的 so 库,安装会静默失败。检查 APK 架构:

# 解压 APK 查看 lib 目录
unzip -l ~/Downloads/is_cool_lexis_5_11_1_1786332565152.apk | grep lib/

# 如果只看到 armeabi-v7a 或 arm64-v8a,没有 x86_64,那就是架构问题

解决方案:安装 ARM 转译层

# 克隆 waydroid_script
git clone https://github.com/casualsnek/waydroid_script.git
cd waydroid_script
python3 -m pip install -r requirements.txt

# 安装 libhoudini(ARM 转译)
sudo python3 main.py install libhoudini
# sudo python3 用的是系统 Python,不是 pyenv 环境的。用 pyenv 的 Python 路径执行:
sudo $(which python3) main.py install libhoudini

装完转译层后重启 Waydroid,再尝试安装 APK。

验证应用是否可用

# 退出 Waydroid shell
exit

# 查看应用列表(应该能看到新安装的应用)
waydroid app list

# 直接启动应用
waydroid app launch com.iscool.lexis  # 包名可能需要确认

查看包名(如果不知道)

waydroid app list | grep -i lexis

或者进入 Waydroid shell 查看:

sudo waydroid shell
pm list packages | grep lexis

后续使用总结

操作 命令
安装 APK waydroid app install xxx.apk
查看已安装 waydroid app list
启动应用 waydroid app launch <包名>
卸载应用 waydroid app remove <包名>
进入安卓 shell sudo waydroid shell
停止 Waydroid waydroid session stop

注意事项

  1. 性能:通过 libhoudini 转译的 ARM 应用性能会有一定损耗,但日常应用(如你装的这个 lexis)通常够用。
  2. 其他 ARM 应用:现在所有 ARM APK 都能直接安装了,不需要再进 shell。

4. 强制重启 Waydroid 会话

waydroid session stop
sudo systemctl restart waydroid-container
waydroid show-full-ui

六、文件共享

# 将主机目录挂载到安卓内部
sudo mount --bind ~/Documents/share ~/.local/share/waydroid/data/media/0/Documents/share

七、常见问题

问题 解决方案
无法启动 / 黑屏 确认使用 Wayland 会话;检查 sudo systemctl status waydroid-container
binder 模块缺失 sudo modprobe binder_linux 或更换内核
GPU 渲染问题 编辑 /var/lib/waydroid/waydroid.cfg,将 renderer 改为 softwarevirgl
需要 Google 服务 安装 microG 替代,或使用 waydroid_script 安装 OpenGapps
完全重置 删除 /var/lib/waydroid~/.local/share/waydroid 后重新 waydroid init

总结

  • 日常使用(微信、钉钉、B站等) → 选 Waydroid,启动快、资源占用低、与桌面集成好。
  • 安卓开发调试 → 选 Android Studio 自带模拟器,功能最全。
  • Anbox → 已废弃,不要再安装。