Anbox
前言
听说最近出了一个软件 anbox,可以在 Linux 上原生运行 Andriod 程序,于是迫不及待想试一试。AUR 已经有人打了包,所以装起来还算方便,只是系统镜像有点大,以及要编译的包稍微有点多。安装方法主要来自 artex-files 在 GitHub 上的评论。
正文
先安装所有需要的软件包 (anbox-image 要单独先装,不然一直显示’cannot resolve anbox-image’)
1 | yaourt -S linux-headers dkms anbox-image |
然后加载所需要的内核模块
1 | sudo modprobe binder_linux |
再启动相关服务 (这里用 start,如果你想开机自启可以再 enable)
1 | sudo systemctl start anbox-container-manager.service |
最后在菜单中寻找 anbox 即可打开 APP 管理器。内置的一些程序如日历、设置等也会显示在菜单中,可以直接打开。目前内置程序还没有 Google Play 等,只能用 ADB 安装。
如果 anbox 还是不能运行,可以试试重启 (?),以及试试用下面这句启动 session-manager
1 | anbox session-manager --gles-driver=host |
运行
默认界面

此时都是默认应用,没有安装其他 APP。
常见问题
是什么让 Anbox 与 Shashlik 或 Genimobile 等其他项目不同?
像 Shashlik 或 Genimobile 这样的项目使用模拟器来运行 Android 环境。模拟器创建一个完整的模拟系统,它有自己的内核等,而 Anbox 在与主机操作系统相同的内核下运行 Android 系统。不需要像 QEMU 那样的仿真层 。一切都直接在硬件上运行。这种方法还允许与主机操作系统更好地集成。是否可以安装 Google Play 商店?
是的,这通常是可能的。但是,只要设备未经过认证且供应商未与 Google 签署协议,Google 就不允许任何人发送其应用程序。
Anbox 项目对发布 Google Play 商店没有任何兴趣,我们不允许这样做。我们可以在以后为用户添加一种简单的方法,以便轻松分发适合 Anbox 运行时环境的 Android 应用程序。如何将应用程序安装到 Anbox 运行时?
除了使用 Android Debug Bridge(adb)之外,用户还没有简单的方法将应用程序安装到 Anbox 运行时。 在主机系统上安装 adb 后,可以安装以下应用程序:1
$ adb install path/to/my-app.apk
之后,您的应用程序应作为 Anbox 运行时的一部分安装,并可通过主机系统应用程序启动器启动。
谷歌将 Android 应用程序引入 Chrome 操作系统的努力是否有任何关系?
Google 正在以与我们非常相似的方式在 Chrome 操作系统中为 Android 应用程序提供支持。这两种方法都非常相似,因为它们都将 Android 放入基于 Linux 命名空间的轻量级系统容器中,并保留一个小桥接以允许与主机系统进行通信。
与 Google 的实施相比,Anbox 不允许任何直接访问硬件设备。例如,它将 Open GL ES 连接到主机。在 Chrome OS 中,容器可以访问图形子系统的主机内核端,以便快速呈现。在我们的例子中,我们决定不采用这种方法来保持将 Anbox 移植到不同平台的简单方法。所有主机操作系统都需要提供 Open GL / Open GL ES 兼容驱动程序,以提供与图形子系统的正确集成。我最喜欢的 Android 应用程序不起作用。我该怎么办?
由于我们提供完整的 Android 系统,通常所有应用程序都可以工作。但是有一些例外:
如果您的应用程序依赖于特定的硬件功能,如 WiFi,蓝牙或电话,我们需要额外的工作来桥接来自主机系统的那些。截至目前,您唯一能做的就是确保在这些功能不可用时您的应用程序正常运行。
Anbox 使用 Android 7 引入的自由格式模式,允许多窗口系统。您的应用程序需要在自由格式模式下良好运行才能在 Anbox 中正常运行。您可以在 Android 开发人员文档中找到更多详细信息 。Anbox 无法在我的设备上启动。我做错了什么?
最有可能的不是你的错。Anbox 仍处于早期阶段,并且在各种不同的系统中没有太多的测试覆盖率。如果 Anbox 没有为您启动,请按照 此处的说明进行操作并提交错误报告,以便开发人员可以查看问题。你说 Anbox 是收敛的。它今天在手机上运行吗?
最初的概念验证是在基于 Ubuntu Touch 的设备上完成的。从那时起,Anbox 已经发展了很多,使桌面设备成为其主要的开发重点。然而,最近的实验表明,在基于 Ubuntu Touch 的移动设备上,Anbox 仍然运行良好(通过一些调整并因为较旧的内核版本而解除限制) 。
我们知道像 UBports 或 LuneOS 这样的其他项目对将 Anbox 作为其发行版的一部分运行非常感兴趣。与这些社区的人们已经建立了密切的关系,但是还没有具体的计划,也没有每个社区项目的主题。为什么 Anbox 仅作为快照分发?
Anbox 目前只是快速发布,因为快照使得我们开发人员的生活变得非常简单。它们使我们能够快速轻松地打包,轻松分发给用户,以及定期快速更新。 Flatpak 将是另一种选择,但我们尚未对此进行调查,我们也不打算在不久的将来这样做。但是,我们很高兴接受来自 Anbox 社区的贡献,以提供必要的更改,以便将 Anbox 分发为 flatpak 软件包。
Anbox 目前没有做的一件事是对快照使用适当的限制。现在它只有在安装在所谓的快照模式中时才可用,它会禁用任何限制。这是我们将在未来几个月与上游合作的事情,以使我们的快照完全受限。
尽管禁用了快速限制,但 Android 系统仍然通过使用来自主机系统的 Linux 命名空间而保持独立。Anbox 是否需要为每个设备提供特定的 Android 映像?
没有. Anbox 不需要为每个设备提供特定的 Android 映像,因为它是以独立于设备的方式构建的。Anbox 将为每个架构(amd64,armhf,arm64)提供单个 Android 映像,并且不需要任何设备特定的修改。
参考链接
[在 Archlinux 上安装 Anbox][ArchLinux 上关于 anbox-git 的评论][github 上的 anbox]
to be continued…