Ubuntu 22.04 上运行安卓应用,目前最推荐的方案是 Waydroid
一、前置检查
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 后移动鼠标。
注意事项
- 架构兼容:确保 APK 包含
x86_64架构的 so 库,否则可能闪退。纯 ARM 应用需要安装 libhoudini 或 libndk_translation 转译层。 - 安装后找不到图标:部分 APK 安装后不会自动出现在 Ubuntu 应用菜单,用
waydroid app list查看包名,然后waydroid app launch <包名>启动。 - 需要 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 |
注意事项
- 性能:通过 libhoudini 转译的 ARM 应用性能会有一定损耗,但日常应用(如你装的这个 lexis)通常够用。
- 其他 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 改为 software 或 virgl |
| 需要 Google 服务 | 安装 microG 替代,或使用 waydroid_script 安装 OpenGapps |
| 完全重置 | 删除 /var/lib/waydroid、~/.local/share/waydroid 后重新 waydroid init |
总结
- 日常使用(微信、钉钉、B站等) → 选 Waydroid,启动快、资源占用低、与桌面集成好。
- 安卓开发调试 → 选 Android Studio 自带模拟器,功能最全。
- Anbox → 已废弃,不要再安装。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
微信
支付宝