公司动态

Waydroid 折腾记录(安卓兼容环境)

📅 2026/8/24 2:53:35
Waydroid 折腾记录(安卓兼容环境)
Waydroid 折腾记录安卓兼容环境日期: 2026-08-11机器: ryzen5-5500u · Debian 13 (trixie) · 14GiB 内存目的: 不用模拟器太重用容器方案跑 Android让 Flutter 直接调试 APK方案选型方案内存占用CPU 架构说明Android 模拟器预分配 2-4G全太重放弃WaydroidLXC 容器与宿主机共享内存池不预分配x86_64 原生已采用唯一要求内核有 binder 模块ARM 应用兼容——Waydroid 只跑 x86_64 原生ARM-only 闭源应用微信/手游需 libndk/houdini 翻译层模拟器才通吃Waydroid 是 LXC 容器Android 进程和主机共用内存类似普通进程不像模拟器固定圈走几 GB。桌面空置时几乎不占内存跑 Flutter 调试 APK 也就多几百 MB。安装过程1. 添加 USTC backports 源binder 内核模块内核自带binder_linux.ko.xz零编译但 Debian 13 正式源里没有 waydroid要加 backports# /etc/apt/sources.list 追加一行deb http://mirrors.ustc.edu.cn/debian/ trixie-backports mainsudoaptupdatesudoaptinstallwaydroid# 版本: 1.6.3ds-2~bpo1312. 加载 binder 模块anbox 命名waydroid init时 LXC 会挂载 binder 节点设备名不对会失败所以用 anbox 命名加载# /etc/modules-load.d/binder_linux.confbinder_linux# /etc/modprobe.d/binder_linux.confoptions binder_linuxdevicesanbox-binder,anbox-vndbinder,anbox-hwbinder# 立即生效sudomodprobe-vbinder_linux3. waydroid init — 镜像下载最大坑waydroid init下载官方镜像SourceForge 巨慢~35KB/s镜像站基本没有。两条关键经验SourceForge 拦浏览器 UA403但对 Python urllib 默认 UA 放行。用 Python 拿真实签名 URLresp.geturl()带 e/st 时间戳参数再丢给下载器。aria2 挂代理实测 9.3MB/s代理http://192.168.31.82:7890curl 走该代理 TLS 会握手失败aria2 反而正常。# 用 Python 拿真实 URL → aria2 -x16 --all-proxy 下载python3 -PY import urllib.request url https://sourceforge.net/projects/waydroid/files/images/lineage/20260403/system.zip/download resp urllib.request.urlopen(url) print(resp.geturl()) # 真实带签名的 zip 地址 PYaria2c-x16-s16--all-proxyhttp://192.168.31.82:7890上面拿到的真实URLsystem zip: 838MB → system.img 1.8Gvendor zip: 189MB → vendor.img 536M放到/etc/waydroid-extra/images/再跑sudo waydroid init即秒过下载中途失败先清残留再重来坏文件会导致 init 校验失败sudorm-rf/var/lib/waydroid /etc/waydroid-extra/images/*sudowaydroid init# 重新来4. 启动 adb 授权免 RSAsudosystemctlenable--nowwaydroid-container waydroid session start# 注意: bash 命令超时会被杀, 用 setsid 保活Waydroid 默认ro.adb.secure1adb 要求 RSA 授权命令行授权麻烦改成 0 直接免授# /var/lib/waydroid/waydroid.cfg [properties] ro.adb.secure 0 persist.service.adb.enable 1 # 同时开自动 adb 输出 auto_adb True之后adb devices# 192.168.240.112:5555 device ← 直接用, 无需 authorizeflutter devices# WayDroid x86 64 Device (mobile) • 192.168.240.112:5555 • android-x64 • Android 13 (API 33)5. 开机自启 桌面快捷方式会话自启容器 service 已开机自启这是用户态部分/home/a1/bin/waydroid-autostart.sh轮询等容器 RUNNING → 若会话没跑则setsid waydroid session start~/.config/autostart/waydroid-session.desktop指向它桌面快捷方式/home/a1/桌面/安卓桌面.desktop→/home/a1/bin/waydroid-desktop.sh脚本逻辑会话没跑就setsid waydroid session start并等 5s →waydroid show-full-ui全屏APK 双击安装系统自带waydroid.app.install.desktop已是.apk默认处理器双击即装。内存实测开机后项数值主机物理内存14GiB空闲 / 可用1.9-3.2G / 8.3-8.8G随桌面活动浮动Waydroid 容器服务约 21M dnsmasq 极小容器内 AndroidMemTotal 15G共享而非独占MemAvailable ~8.7G结论Waydroid 不预分配内存Android 进程视负载在主机池里动态取用桌面空置时基本不占。注意事项会话生命周期bash/终端命令超时被 kill 会导致容器 FROZEN 或会话偶发停止恢复用sudo waydroid container stop/startsetsid waydroid session start。重启机器后自启用不上就手动跑一次waydroid-desktop.sh。镜像源waydroid 镜像只有官方 SourceForge无国内镜像站只能挂代理 Python 拿真实 URL 加速。Flutter debug 版构件未解决mirrors.huaweicloud.com/flutter缺 io.flutter debug 构件flutter run -d waydroid的 debug 构建会失败release 构建无碍。已装 APK 是 release 版。系统镜像版本lineage-20.0 VANILLA无 GMSAndroid 13 API 33。