像shashlik或Genimobile这样的项目使用模拟器来运行Android环境。仿真器创建一个完整的仿真系统,它有自己的内核等,而Anbox在与主机操作系统相同的内核下运行Android系统。不需要像QEMU这样的模拟层。一切都直接在硬件上运行。此方法还允许更好地与主机操作系统集成。
是的,这通常是可能的。然而,谷歌不允许任何人交付其应用程序,只要设备没有经过认证,供应商也没有与谷歌签署协议。
Anbox项目对发货Google Play商店没有任何兴趣,我们也不允许这样做。我们可能会在以后为我们的用户添加一种简单的方式,允许轻松分发适合Anbox运行时环境的Android应用程序。
除了使用Android Debug Bridge(ADB)之外,用户还没有简单的方法可以将应用程序安装到Anbox运行时中。当您在主机系统上安装了ADB后,您可以安装如下应用程序:
之后,您的应用程序应该作为Anbox运行时的一部分进行安装,并且可以通过主机系统应用程序启动器启动。
Google在Chrome OS中实现对Android应用程序的支持的方式与我们非常相似。这两种方法非常相似,因为它们都将Android放入基于Linux命名空间的轻量级系统容器中,并且都保留了一座小桥以允许与主机系统进行通信。
与谷歌的实现不同,Anbox不允许直接访问硬件设备。例如,它将Open GL ES连接到主机。在Chrome OS中,容器可以访问图形子系统的主机内核端,以实现快速渲染。在我们的例子中,我们决定不这样做,而是保持一种简单的方式将Anbox移植到不同的平台。主机操作系统需要提供的全部内容是Open GL/Open GL ES兼容驱动程序,以提供与图形子系统的正确集成。其他硬件设备,如WiFi或蓝牙,将来将通过容器和主机之间的专用API进行抽象。
由于我们提供了一个完整的Android系统,通常所有的应用程序都应该可以工作。但是,也有几个例外:
如果您的应用程序依赖于特定的硬件功能,如WiFi、蓝牙或电话,我们需要额外的工作来从主机系统桥接这些功能。到目前为止,您唯一能做的就是确保您的应用程序在这些功能不可用时运行正常。
Anbox使用Android 7引入的自由形式模式,允许多窗口系统。您的应用程序需要在自由形式模式下运行良好,才能在Anbox中正常运行。您可以在Android开发人员文档中找到更多详细信息。
很可能这不是你的错。Anbox仍处于早期阶段,目前还没有太多的测试覆盖范围广泛的不同系统。如果Anbox没有为您启动,请按照此处的说明进行操作,并提交错误报告,以便开发人员可以调查该问题。
最初的概念验证是在基于Ubuntu Touch的设备上完成的。从那时起,Anbox发生了相当大的变化,使桌面设备成为其主要开发重点。然而,最近的实验表明,Anbox在基于Ubuntu Touch的移动设备上仍然运行良好(只做了一些调整,并取消了限制,因为内核版本较旧)。
我们知道UBports或LuneOS等其他项目对将Anbox作为其发行版的一部分运行非常感兴趣。已经与这些社区的人们建立了密切的关系,但还没有具体的计划,也没有每个社区项目的主题。
Anbox目前只以Snap的形式发布,因为Snaps让我们开发人员的生活变得非常简单。它们允许我们快速轻松地打包,轻松分发给我们的用户,以及定期和快速更新。Flatpak将是另一种选择,但我们还没有调查过这一点,也不打算在不久的将来这样做。然而,我们很高兴接受来自Anbox社区的贡献,以提供必要的更改来将Anbox作为Flatpak包分发。
Anbox目前没有做的一件事是对快照使用适当的限制。目前,它只有在所谓的快照设备模式下才能使用,该模式可禁用任何限制。这是我们将在未来几个月与上游合作的内容,以使我们的快照完全受到限制。
尽管快照限制被禁用,但Android系统仍然通过使用Linux命名空间与主机系统保持分离。
不是的。Anbox不需要为每台设备都提供特定的Android镜像,因为它是以独立于设备的方式专门构建的。Anbox将为每个架构(AMD64、armhf、arm64)提供单一的Android镜像,不需要修改设备规格。