在 Ubuntu 24.04 上跑 Android 应用我为什么最终选了 Waydroid 容器方案【免费下载链接】waydroidWaydroid uses a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu.项目地址: https://gitcode.com/gh_mirrors/wa/waydroidWaydroid 是一款基于 LXC 容器技术、能在 Ubuntu 这类常规 GNU/Linux 系统上直接启动完整 Android 系统的开源工具不需要虚拟机内核。这篇文章记录我的真实折腾经历目标是让你用半小时完成从安装初始化到日常使用 Android 应用的全流程并避开我踩过的三个坑。先分清两种方案虚拟机模拟器和容器方案差在哪最早我试过在 Linux 里装传统 Android 模拟器内存占用轻松破 4GB启动要等一分钟GPU 直通还要折腾半天最后我只想跑个微信却被驱动问题劝退。Waydroid 走的是另一条路它不虚拟化硬件而是复用宿主机的 Linux 内核用 binder 和 ashmem 机制跟桌面系统交互。核心 LXC 配置写在data/configs/config_base里lxc.rootfs.path直接指向/var/lib/waydroid/rootfs也就是说 Android 系统和你共用同一个内核所以启动是秒级的。内存占用虚拟机按 GB 起跳容器通常几百 MB启动速度虚拟机冷启动 30 秒以上容器基本 5 秒内出桌面GPU 支持容器直接走宿主机驱动玩游戏更顺唯一要提前确认的是你的内核需要支持 binder 设备Ubuntu 24.04 默认内核一般没问题这个在下一节会验证。三步完成初始化waydroid init 与镜像类型选择安装分三步全程命令行没有图形安装器sudo apt update sudo apt install waydroid -y sudo waydroid init -s GAPPS sudo systemctl enable --now waydroid-container第一步装主体第二步是关键——waydroid init会下载 system 和 vendor 两份镜像到/var/lib/waydroid/images同时生成 LXC 容器配置。这里的-s GAPPS表示自带 Google 服务框架如果你只想要纯净版可以换成-s VANILLA或-s FOSS也可以在 init 时加-r lineage指定 ROM 类型这些参数在项目的tools/helpers/arguments.py里都有说明。镜像大约 1GB 以上取决于网速可能要等一会儿。初始化完成后用waydroid status检查一次看到提示就说明环境就绪了。小贴士如果之后想换镜像类型用waydroid init -f -s VANILLA强制重新初始化即可不必重装软件。启动失败的排查顺序先 status 再 log我第一次waydroid session start直接报错白屏卡了几分钟。后来总结出的排查顺序是先waydroid status看容器状态再waydroid log -n 60看日志尾部而不是瞎猜。如果 status 显示容器没起来多半是waydroid-container服务没启动sudo systemctl status waydroid-container确认日志里出现 binder 相关字样说明内核 binder 模块没加载Ubuntu 24.04 需要确认内核模块已启用网络不通时检查data/scripts/waydroid-net.sh创建的waydroid0桥接是否存在它的网段固定是 192.168.240.0/24DHCP 范围 192.168.240.2 到 .254另外提一句安全策略项目在data/configs/apparmor_profiles/里带了三份 AppArmor 配置lxc-waydroid、adbd、android_app系统集成时会自动安装不建议自己删改否则容器可能连启动都做不到。日常高频命令装 APK、查属性、看 logcat跑起来之后日常操作靠这几个命令就够了waydroid app install 微信.apk # 安装 APK waydroid app launch com.tencent.mm # 按包名启动应用 waydroid app list # 查看已安装应用 waydroid logcat | grep Error # 看 Android 侧日志想把 Android 窗口放大到全屏用waydroid show-full-ui临时暂停后台任务释放 CPU用waydroid container freeze恢复时unfreeze。想改系统属性比如屏幕密度waydroid prop set比进 adb shell 方便得多。注意文件传输和剪贴板同步依赖你的桌面环境与 Waydroid session 的集成GNOME 下体验最好。如果从 Linux 复制文本到 Android 里没反应先确认 session 已正常启动而不是反复重启容器。镜像升级与维护waydroid upgrade 的正确打开方式Android 镜像会持续更新升级只需要一条命令sudo waydroid upgrade它会增量拉取新的 system/vendor 镜像并重建配置。如果只想更新配置不想重新下载镜像比如刚改过自定义参数加-o走离线模式。日常用waydroid status和waydroid log就能掌握健康度。顺带一提如果你偏好自己编译而不是用发行版仓库的版本可以 clone 源码git clone https://gitcode.com/gh_mirrors/wa/waydroid根目录的Makefile里可以通过USE_SYSTEMD、USE_NFTABLES这些开关控制装成 systemd 服务还是网络层用 nftables自由度比预编译包高。写在最后我的核心结论Waydroid 容器方案的最大价值是把在 Linux 上跑 Android 应用从虚拟机时代的沉重负担变成了秒级启动的轻量操作前提是内核支持 binder 且按status → log的顺序排障。你现在就可以执行sudo waydroid init -s GAPPS跑一次初始化十几分钟后就能见到 Android 桌面。如果你在 binder 模块或 GAPPS 版登录上遇到具体报错欢迎留言我会把排查过程整理成后续文章。【免费下载链接】waydroidWaydroid uses a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu.项目地址: https://gitcode.com/gh_mirrors/wa/waydroid创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考