导言:

Anbox是一个Android模拟器,可以从linux系统运行Android应用程序或游戏。对于Anbox的安装已经有了各种教程,主要针对ubuntu18.04之前的版本。最近在做一个关于虚拟机中跑安卓的项目,因此在虚拟机中使用ubuntu18.04系统,然后按照指导搭建Anbox模拟器。但是很遗憾Anbox未能成功的跑起来。



一、为什么Anbox启动失败呢?


在ubuntu18.04使用cirrus显卡时可以正常启动。按照网上的知道anbox也能正常的安装,但是在启动anbox Application Manager的时候失败了。启动的窗口一闪而过。查看anbox的启动日志,发现中有大量的报错。


如:


SurfaceFlinger: hwcomposer module not found - Abort message: no suitable EGLConfig found, giving up


由于EGLConfig是用来提供显示相关服务的所以猜测更显卡有关。由于之前解决过Android-x86在kvm启动时的花屏问题,所以猜测需要将网卡替换成VGA。


不幸的是ubuntu18.04在使用VGA显卡后居然不能正常进入图形界面。这一块应该是内核驱动问题。这个要是更改需要自己去替换内核,恰好手上也有19.10的系统,就试试在ubuntu19.10上开始搭建Anbox。



二、在kvm上启动ubuntu19.10


现在进入正题。首先需要下载ubuntu19.10的镜像。使用国内163的源下载速度飞快。


http://mirrors.163.com/ubuntu-releases/19.10/ubuntu-19.10-desktop-amd64.iso


本人是在centos7上使用libvirt启动虚拟机的。对于虚拟机的操作不再赘述。启动kvm虚拟机进行操作系统安装即可。这里将虚拟机的启动xml分享



<domain type='kvm'>
  <name>anboxname>
  <memory unit='KiB'>4194304</memory>
  

  


虚拟机xml很普通,但是为了规避之前遇到的Anbox启动不起来的问题,需要特别注意要使用VGA显卡来创建虚拟机。安装完成后,进入ubuntu这样准备工作已经完成了。



三、在ubuntu19.10中安装Anbox


对于安装Anbox本人参考

https://www.linuxidc.com/Linux/2020-01/162095.htm


由于ubuntu已经使用snap来管理软件的安装,其实Anbox的安装已经非常简单了。

直接输入命令


snap install --devmode --beta anbox


这样anbox就安装好了


在KVM下使用ubuntu19.10安装Anbox_java


按照参考文档接下来应该添加源,然后下载内核模块ashmem和binder。


可是源地址并没有编译ubuntu19.10要使用的模块。因此会报如下错误


在KVM下使用ubuntu19.10安装Anbox_java_02

既然如此,需要自己使用源码进行编译。在我编译源码时候意外的发现,其实Android 的内核模块已经进入主干了。


在KVM下使用ubuntu19.10安装Anbox_java_03

在KVM下使用ubuntu19.10安装Anbox_java_04


真是大大的惊喜,这样就不用再编译内核模块了,直接启动Anbox Application Manager。启动成功。


在KVM下使用ubuntu19.10安装Anbox_java_05



四、总结:


由于ubuntu19.10中已经对Android 的内核模块进行了支持。所以以后的Anbox安装变的十分方便。只需要执行如下命令就可以了。


snap install --devmode --beta anbox


当然如果想在虚拟机里面使用anbox,还是需要注意对虚拟显卡的配置,使用VGA显卡。

在KVM下使用ubuntu19.10安装Anbox_java_06