如何在Linux容器内运行Android？ | Mayx的博客
Author: mayx
Description: 原生运行Android肯定比虚拟机好！
Date: 2023-12-24T00:00:00+08:00

24 December 2023 - 字数统计：1590 - 阅读大约需要5分钟 - Hits: Loading...

# 如何在Linux容器内运行Android？

by mayx

这是一篇创建于 天前的文章，其中的信息可能已经有所发展或是发生改变。

AI摘要

这篇文章介绍了如何在Linux容器中使用Waydroid和redroid两种方法来运行Android系统，虽然Waydroid性能较强，但存在依赖于Wayland且不支持ARMT架构程序的问题，需要额外安装工具。redroid支持多实例和不同安卓版本，但遇到了ARM兼容库的问题，特别是对Intel CPU支持不足。作者认为由于真机运行和虚拟机在性能上已经足够，且Linux用户群相对较小，所以容器内运行Android的需求较少。

- 起因
- 试用Waydroid
- 试用redroid
- 总结

原生运行Android肯定比虚拟机好！

#
起因

前段时间我在树莓派上安装了openFyde，后来发现原来它的ArcHero安卓子系统是基于anbox开发的，和ChromeOS的安卓子系统有一些区别，至于区别在哪我也不是特别清楚。不过既然它的安卓子系统和Linux直接安装的没啥区别，那不如我试试看在普通的Linux上安装容器化的安卓系统效果怎么样？

#
试用Waydroid

最开始我测试的是Waydroid，因为听说anbox的升级版就是Waydroid，据说性能比anbox强，所以想试试看，安装挺简单的，执行个脚本之后用apt就能安装。不过我的测试平台是Ubuntu Server 20.04LTS，Waydroid之所以叫这个名字是因为它要基于Wayland显示服务器运行，可我是无界面的系统要怎么用它啊？Waydroid好像没有无头模式这种东西，不过我搜了一下weston实现了Wayland协议而且支持无头模式，用法也很简单，安装好weston之后执行`weston --backend=headless-backend.so`就可以了。

不过默认安装好的Waydroid不能运行ARM架构的程序，似乎是因为libhoudini之类的库是有版权的，所以不能直接集成，不过还好有人开发了一个工具包，可以给Waydroid安装包括libhoudini在内的多个因为版权等原因不能直接在项目里使用的程序，而且操作起来也很简单，体验还不错。

至于怎么查看界面，因为是无头模式启动的所以没有界面，只能通过adb查看，不过我试了一下scrcpy不知道为什么不能用，但是用Airtest就能看到界面，就挺奇怪的……还有就是分辨率很低，不过这个应该改weston的启动参数就可以改分辨率了吧，但因为后来发现Waydroid不能开多个实例感觉有点废物就没有在继续研究了。

不过总的来看，如果是在桌面版的Linux上，而且界面是使用Wayland协议的效果应该会比较好，好像Ubuntu22.04以上的系统默认会使用Wayland，在这个系统上面使用Waydroid效果应该比在Windows上使用WSA的效果还要好。毕竟这可不是虚拟机运行，而是使用容器技术原生运行的，如果有机会的话还是值得一用的。

#
试用redroid

因为Waydroid不能开多个实例，所以我搜了一下有没有类似技术而且能开多个实例的，结果就找到了redroid。安装也很简单，执行几个命令修改下内核模块然后直接用docker pull个镜像就可以用，而且这个切换版本比Waydroid简单，Waydroid想换别的安卓版本要自己整镜像，不然就只能用基于Android 11的LineageOS，redroid可以按镜像的版本号选择希望使用的安卓版本，而且我测试了一下，redroid是可以使用scrcpy连接的，看起来效果还不错。

但是我试了一下运行一些ARM的安卓程序会出现闪退的情况，我以为是因为没有ARM兼容库的问题，但是文档上写的镜像里面已经自带了libndk……这么看来可能是因为libndk的兼容性不太行啊，另外libndk好像是给AMD的CPU使用的，我用的CPU是Intel的，Intel应该用libhoudini才对，然而我找了半天也没有找到怎么让redroid使用libhoudini……真是令人失望啊。

#
总结

看来在容器内运行Android系统的需求还是太少了，很多问题都没人解决……不过想想也是，那些搞云手机的大多直接拿真机运行Android，用兼容层的性能损耗也很大，而服务器级别的ARM芯片也不便宜……

另外就是使用Linux的人也很少，而且像那些在Windows上玩安卓游戏的人都是用的虚拟机，性能也都够用了，毕竟那么高功率的桌面端CPU怎么样都比超低功率的手机CPU强啊，所以容器内运行Android的需求比较少可能也很正常吧……

tags: Linux - Android 查看原始文件

#### 推荐文章

Loading...

上一篇：rpi4-openfyde的使用体验
下一篇：年终总结
想问这篇文章
召唤伊斯特瓦尔