当前位置: 首页 > backend >正文

archlinux安装waydroid

大部分内容来自archlinux的wiki,我加上了一些自己的实践记录。

准备工作

CPU 要求

CPU 要求取决于 CPU 架构。更多信息可参阅此表格。

可以使用 cat /proc/cpuinfo 检查是否具备所需的 CPU 指令集。

GPU 要求

Waydroid 目前最适合在 Intel GPU 上使用(可开箱即用)。

已支持所有 AMD GPU;如果 Waydroid 不工作,您可能需要构建一个新的 Waydroid 映像(在 Radeon 680M 上正常工作),或者尝试以下有关 NVIDIA 的说明。

NVIDIA GPU 目前不被支持。有两种解决方法:

可能的话,切换到集成显卡
使用软件渲染(参见#软件渲染)

Wayland 会话管理器

Waydroid 只在 Wayland 会话管理器中工作,因此请确保您处于 Wayland 会话中。

请注意,即使处于 X11 会话中,许多 Wayland 会话管理器也支持嵌套会话,因此可以在 X11 会话中运行 Waydroid(最简单的例子是 cage包)。

内核模块

需要运行包含 binder 模块的内核,linux包、linux-lts包、linux-zen包 和 linux-lilyCNRepo均包含该模块。若您使用不同的内核,则可能需要重新编译或通过 DKMS 安装 。

DKMS 模块

安装 binder_linux-dkms

yay -S binder_linux-dkms 

并使用 devices=binder,hwbinder,vndbinder 内核选项加载 binder_linux 内核模块(参见 bug 报告)。

# modprobe binder-linux devices=binder,hwbinder,vndbinder

此外,您也可以通过在 /etc/modules-load.d/ 和 /etc/modprobe.d/ 创建配置文件来让 binder_linux 在启动时被加载(这是可选的,参阅内核模块以获取更多信息)。

/etc/modules-load.d/binder_linux.conf

# Load binder_linux at boot
binder_linux

/etc/modprobe.d/binder_linux.conf

# Options for binder_linux
options binder_linux devices=binder,hwbinder,vndbinder

您还需要使用 ibt=off 内核参数来解决 5.18+ 版本内核上的一个问题,参阅 Segmentation fault when mounting /dev/binderfs

安装

安装 waydroid AUR 软件包。

yay -S waydroid

可以选择通过 AUR 安装 waydroid-image (AUR) 或 waydroid-image-gapps (AUR) 来提供所需的 Android 映像。然而,让 Waydroid 自己下载映像是更推荐的做法。

提示:中国用户可能会下载映像极为缓慢,可以通过添加 archlinuxcn 仓库之中国大陆镜像后安装
waydroid-image CNRepo,这可以显著提高下载速度。

在初始化 Waydroid 之后,如果映像不可用,将会自动下载最新的 Android 映像(可能会耗时很久;你也可以自行下载之后将文件放到 /usr/share/waydroid-extra/images/)。

我这里命令下载就非常的慢,很久,我就自己手动在浏览器中下载这个链接

https://sourceforge.net/projects/waydroid/files/images/system/lineage/waydroid_x86_64/lineage-18.1-20250503-VANILLA-waydroid_x86_64-system.zip/download

然后下载后放到了/usr/share/waydroid-extra/images/

mkdir -p /usr/share/waydroid-extra/images/
cp lineage-18.1-20250503-VANILLA-waydroid_x86_64-system.zip /usr/share/waydroid-extra/images/
cd /usr/share/waydroid-extra/images/
unzip lineage-18.1-20250503-VANILLA-waydroid_x86_64-system.zip

这时执行

waydroid init                                                                      
[23:30:55] Found directory /usr/share/waydroid-extra/images but missing system or vendor image, ignoring...

我就换成这个了

yay -S waydroid-image-gapps 

这个下载确实快很多。安装完成后,就可以使用waydroid了,我对比了一下现在的目录中/usr/share/waydroid-extra/images/
是有两个文件的。
system.img vendor.img
我之前只是下载了system.img另一个地址不知道是什么所以也没有下载。

用起来感觉非常的流畅,可惜在android里我无法上网。

解决上网的问题

wiki中说网络理论上是开箱就可用的,我的就是网络不通。所以我猜测可能跟我的Linux内核有点关系。我参考了
https://www.bilibili.com/video/BV153411H7UR/?spm_id_from=333.337.search-card.all.click&vd_source=3b8afcc2613780d7607382bae034945a

安装一下内核吧、

sudo pacman -S linux-zen

重新生成grub

sudo grub-mkconfig -o /boot/grub/grub.cfg

实测与这个内核无关,是默认带的浏览器访问www.baidu.com不行

用法

确保 waydroid-container.service 已启动,然后执行:

$ waydroid session start

Waydroid 会话现在已处于活动状态,以下是一些与 Waydroid 交互的实用命令:

启动 GUI:

$ waydroid show-full-ui

启动 shell:

# waydroid shell

安装应用程序:


```bash
$ waydroid app install $path_to_apk

运行应用程序:```bash
$ waydroid app launch $package-name

注意:$package_name 是 list 命令所示的 packageName(包名)属性,并非 Name(应用名称)属性。

获取应用程序列表:

$ waydroid app list

这里比较坑的是,就算安装报错了,也没有提示。

不兼容 ARM 应用

默认情况下,好多应用都安装不上。安装方法参考:
https://github.com/casualsnek/waydroid_script

使用 casualsnek 的脚本安装翻译层。

为提高翻译性能,推荐在 AMD CPU 上使用 libndk,在英特尔 CPU 上使用 libhoudini。然而部分应用仅支持一种翻译层,因此当某个游戏不工作或性能极差时,您可能需要把两个翻译层都试一遍。

安装 libndk arm 翻译层

# python3 main.py install libndk 

安装 libhoudini arm 翻译层

# python3 main.py install libhoudini

android TV 系统

https://github.com/supechicken/waydroid-androidtv-build/releases

下载完成以后解压得到的system.img,vendor.img复制到/usr/share/waydroid-extra/images

清除之前的镜像的数据,如果有重要数据请自行备份。我这里就直接删除了。

# equivalent to factory reset, all data will be LOST
rm -rf ~/.local/share/waydroid
rm -rf /var/lib/waydroid/overlay*
sudo waydroid init -f

如果要清除之前自动生成的快捷方式,可以到以下目录中删除

~/.local/share/applications/

初体验

使用下来第一感觉是非常的流畅,第二感觉就是好多软件不兼容,闪退。很多想用的软件都闪退。要么就是本来就无法安装上去。

总本来说,感觉作用不是很大。主要原因是兼容性问题。

参考

https://wiki.archlinuxcn.org/wiki/Waydroid

http://www.xdnf.cn/news/4066.html

相关文章:

  • 查看并升级Docker里面Jenkins的Java17到21版本
  • 双目测量中的将视差图重投影成三维坐标图
  • 某信服EDR3.5.30.ISO安装测试(二)
  • kotlin 03flow-stateFlow和sharedFlow企业中使用
  • 青听音乐 1.0.6| 全网音乐免费听,无损下载,4条音源,界面简洁无广告
  • Nacos源码—3.Nacos集群高可用分析一
  • 【QT】QT中的软键盘设计
  • C# 方法(局部函数和参数)
  • [前端]异步请求的竞态问题
  • 代码随想录第34天:动态规划7(打家劫舍问题:链式、环式、树式房屋)
  • STA中的multi_cycle 和false_path详细讨论
  • macOS 上是否有类似 WinRAR 的压缩软件?
  • Qt6.8中进行PDF文件读取和编辑
  • LeetCode:返回倒数第k个结点
  • MyBatis 一对多与多对一映射详解教程
  • macbook install chromedriver
  • 百度golang开发一面
  • SpringBoot集成CXF框架,实现WebService
  • 2025系统架构师---论面向对象的软件设计
  • Python字符串全面指南:从基础到高级操作
  • 计算机视觉与深度学习 | 点云配准算法综述(1992-2025)
  • Python核心技巧 类与实例:面向对象编程的基石
  • 协程补充---viewModelScope 相关知识点
  • 【计算机视觉】3d人脸重建:3DDFA_V2:实时高精度3D人脸重建与密集对齐技术指南
  • 【NLP】 26. 语言模型原理与概率建模方法详解(Language Models)
  • QT聊天项目DAY08
  • C 语言逻辑运算符:组合判断,构建更复杂的条件
  • Cisco Packet Tracer 选项卡的使用
  • Python中的客户端和服务端交互的基本内容
  • vue实现AI问答Markdown打字机效果