Ubuntu24.04 安卓模拟器安装指南

一、Waydroid 简介

Waydroid 是一个基于容器的开源工具,允许用户在 Linux 系统上运行完整的 Android 系统。它利用 Linux 内核的命名空间和 cgroups 功能,通过轻量级虚拟化技术实现 Android 应用的兼容性,无需传统虚拟机的高开销。

1、核心特性

  • 轻量级:基于容器技术,资源占用远低于传统虚拟机(如 VirtualBox)。
  • 高性能:直接使用宿主机的 Linux 内核,支持硬件加速(如 GPU)。
  • 兼容性:支持大多数 Android 应用,包括依赖 Google 服务框架的应用(需额外配置)。
  • 集成性:Android 应用可与 Linux 桌面环境无缝交互(如窗口模式、共享剪贴板)。

2、技术原理

Waydroid 由两部分组成:

  1. Waydroid 容器:运行 Android 系统的用户空间,基于 LineageOS 或 AOSP。
  2. Waydroid 服务:管理容器生命周期,处理与宿主机(如输入、显示)的交互。

依赖 Linux 内核的以下功能:

  • binderfs:提供 Android 的 Binder IPC 机制。
  • ashmem:实现共享内存。
  • 硬件加速:通过 VirglRenderer 或宿主 GPU 驱动支持图形渲染。

3、安装与配置

系统要求

  • Linux 内核 ≥ 5.4(需启用 binderfs 和 ashmem)。
  • 支持 Vulkan 的 GPU(推荐)或 VirglRenderer。
  • 至少 4GB 内存(建议 8GB 以上)。

4、常见问题

  • 应用崩溃 :检查是否启用硬件加速,或尝试切换图形后端(如 waydroid prop set ro.hardware.gralloc=default)。
  • 网络问题:确保宿主机网络正常,Waydroid 默认共享宿主机网络。
  • 输入法支持:在 Android 设置中手动启用第三方输入法。

5、应用场景

  • 开发测试:快速验证 Android 应用兼容性。
  • 移动办公:在 Linux 桌面环境中运行微信、钉钉等移动应用。
  • 游戏娱乐:支持手柄或键鼠映射的 Android 游戏。

6、性能优化建议

  • 使用主流的 Wayland 合成器(如 Sway、GNOME on Wayland)以获得更好的窗口管理。
  • 分配更多 CPU 核心给容器(通过 waydroid prop set ro.cpuset.cpus=0-3)。
  • 关闭不必要的 Android 后台服务以节省资源。

Waydroid 目前仍处于活跃开发阶段,适合技术爱好者或特定需求用户。对于稳定性要求高的场景,建议关注其官方更新日志或社区反馈。

二、Waydroid 安装

bash 复制代码
sudo apt install curl ca-certificates -y
curl -s https://repo.waydro.id | sudo bash
sudo apt install waydroid -y
sudo systemctl enable --now waydroid-container

三、Waydroid 配置

点击图标打开 Waydroid :

首次初始化时需要下载镜像文件,但是直接下载会很慢:

此时需要手动下载,打开 https://sourceforge.net/projects/waydroid/files/images/ ,可以看到 vendorsystem 两个文件夹,进去下载对应版本的 vendorsystem,使用 motrix 或者某雷下载。

bash 复制代码
https://zenlayer.dl.sourceforge.net/project/waydroid/images/system/lineage/waydroid_x86_64/lineage-20.0-20250809-VANILLA-waydroid_x86_64-system.zip?viasf=1
https://zenlayer.dl.sourceforge.net/project/waydroid/images/vendor/waydroid_x86_64/lineage-20.0-20250809-MAINLINE-waydroid_x86_64-vendor.zip?viasf=1

注意,如果需要下载带谷歌框架的镜像,需要选择GAPPS版本!

下载后解压,得到 vendor.imgsystem.img ,将镜像复制到 waydroid 指定文件夹内:

bash 复制代码
sudo mkdir -p /usr/share/waydroid-extra/images/
sudo mv system.img /usr/share/waydroid-extra/images/
sudo mv vendor.img /usr/share/waydroid-extra/images/

初始化系统:

bash 复制代码
sudo waydroid init -f

四、Waydroid 启动

运行 waydroid

bash 复制代码
waydroid session start
复制代码
[16:42:18] WAYLAND_DISPLAY is not set, defaulting to "wayland-0"
[16:42:18] Wayland socket '/run/user/1000/wayland-0' doesn't exist; are you running a Wayland compositor?

这是因为 N 卡与 Ubuntu 桌面导致的不兼容问题:

问题不大,可以通过安装合成器解决,如下:

bash 复制代码
sudo apt install weston
weston

重新启动:

bash 复制代码
export WAYLAND_DISPLAY=wayland-1 
waydroid session start

成功启动!

五、模拟器联网

默认情况下,模拟器是断网的,需要配置防火墙进行联网。

打开模拟器的窗口终端,执行防火墙命令:

bash 复制代码
sudo ufw allow 53
sudo ufw allow 67
sudo ufw default allow FORWARD
sudo ufw reload
sudo ufw status
sudo ufw enable

修改浏览器默认引擎:

重新打开首页:

此时就可以上网冲浪了!

相关推荐
Kapaseker24 分钟前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95271 小时前
Andorid Google 登录接入文档
android
黄林晴3 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab15 小时前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿18 小时前
Android MediaPlayer 笔记
android
Jony_18 小时前
Android 启动优化方案
android
阿巴斯甜19 小时前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇19 小时前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android
_小马快跑_1 天前
Kotlin | 从SparseArray、ArrayMap的set操作符看类型检查的不同
android