Anbox 全称为 “Android in a box”,是一种创新的容器化方法,旨在让用户在常规的 GNU/Linux 系统上启动完整的 Android 系统。它利用 Linux 命名空间(LXE)将核心 Android 操作系统放入容器中,实现了高效的运行环境。
Anbox 无需虚拟化,这意味着启动速度更快,系统资源消耗更低。与传统的安卓模拟器相比,Anbox 更加轻量级便捷,能够快速响应用户的操作需求。由于无法从安卓容器直接访问任何硬件,所有硬件访问都通过主机上的 Anbox 守护程序进行,这大大提高了系统的稳定性。Anbox 支持大部分安卓应用程序,且无需进行修改,兼容性非常好。它可以在不同的操作系统上运行,包括 Linux、Windows 等,适用范围广泛。
每个应用程序在 Anbox 中都将在一个单独的窗口中打开,就像系统的其他原生应用程序一样,并且可以在启动器中显示。这种设计使得用户在使用 Android 应用时,能够获得与使用本地应用相似的体验。
二、安装步骤(一)系统要求及准备Anbox 的安装对系统有一定要求。需要确保你的系统是 Ubuntu 18.04 或 20.04,或其他支持 Snap 的 Linux 发行版,并且内核具有必要的支持。内核需要支持一些特定的功能模块,以确保 Anbox 能够正常运行。在开始安装之前,最好先检查一下系统是否满足这些要求,以免在安装过程中出现不必要的问题。
(二)安装依赖项安装 Anbox 需要一系列的依赖项。首先,执行sudo apt-get update命令确保系统的软件包列表是最新的。然后,执行sudo apt-get install -y build-essential cmake cmake-data debhelper dbus google-mock \\libboost-dev libboost-filesystem-dev libboost-log-dev libboost-iostreams-dev \\libboost-program-options-dev libboost-system-dev libboost-test-dev \\libboost-thread-dev libcap-dev libexpat1-dev libsystemd-dev libegl1-mesa-dev \\libgles2-mesa-dev libglm-dev libgtest-dev liblxc1 libproperties-cpp-dev libprotobuf-dev \\libsdl2-dev libsdl2-image-dev lxc-dev pkg-config protobuf-compiler python3-minimal命令,安装构建和运行 Anbox 所需的各种开发库和工具。这些依赖项包括编译器、库文件、开发工具等,总数多达几十项,确保了 Anbox 在系统中的稳定运行和功能实现。
(三)获取源代码与构建安装获取源代码:通过git clone https://github.com/anbox/anbox.git --recurse-submodules命令克隆 Anbox 的 GitHub 仓库,并进入克隆后的目录cd anbox。
构建安装:首先创建构建目录mkdir build,进入构建目录cd build,执行cmake..进行 CMake 配置,然后执行make进行编译,最后使用sudo make install进行安装。如果想要构建 Snap 包以便于分发和安装,可以执行ARCH=$(uname -m),然后cp /path/to/android.img data/android-images/android-$ARCH.img,最后执行snapcraft。这将生成一个 Snap 文件,可以在支持 Snap 的系统上安装 Anbox,但需使用危险模式安装,即sudo snap install --dangerous --devmode anbox_1_amd64.snap。
(四)运行 Anbox安装完成后,启动 Anbox 可能还需要配置一些运行时环境,具体细节可参照 Anbox 的官方文档 “Runtime Setup”。由于 Anbox 项目已经宣布不再活跃,并推荐使用如 Waydroid 等新方案,安装前请考虑替代品。本指南基于 Anbox 最后活跃时的信息编写,实际操作时应核实软件状态和依赖是否变动。在使用过程中遇到任何问题,都可以查阅最新的官方文档或者社区资源寻找帮助。
三、使用方法(一)启动 Anbox启动 Anbox 的命令通常是anbox session-manager。但如果启动遇到dbus_message_new_method_call()问题,运行命令修改为DBUS_FATAL_WARNINGS=0 anbox session-manager。在启动 Anbox 时,需要确保已经安装了必要的内核模块,如ashmem_linux和binder_linux。如果内核版本在 4.17 之后,这些模块可能已经集成比较完善,但建议采用高版本内核以确保稳定性。
(二)安装安卓应用使用 adb 安装应用非常简单,在主机系统上安装 adb 后,可以使用命令adb install path/to/my-app.apk安装应用程序。然而,在 x86 架构下,可能会出现一些问题。如果是在 x86 架构下安装 apk,默认情况下不能直接安装 ARM 应用或游戏,会显示错误消息。这时可以考虑使用libhoudini来支持 ARM 应用,但这个过程比较复杂。一种方法是下载 Android x86 版本的应用,如 Chrome 浏览器,然后使用安卓模拟器中的浏览器下载想要安装的 apk,就可以安装了。
(三)安装 Google Play 商店及权限设置安装 Google Play 商店可以通过以下步骤实现:
安装所需的依赖项(wget、lzip、unzip 和 squashfs-tools)。在 Debian、Ubuntu 或 Linux Mint 中,使用命令sudo apt install wget lzip unzip squashfs-tools安装所需的依赖项。
下载并运行脚本,在 Anbox 上自动下载并安装 Google Play 商店(和 Google Play 服务)和 libhoudini(用于 ARM 应用 / 游戏支持)。使用命令wget https://raw.githubusercontent.com/geeks-r-us/anbox-playstore-installer/master/install-playstore.sh下载脚本,然后使用chmod +x install-playstore.sh使其可执行,最后使用sudo./install-playstore.sh运行脚本。
要让 Google Play 商店在 Anbox 中运行,需要启用 Google Play 商店和 Google Play 服务的所有权限。运行Anbox:anbox.appmgr,然后进入 “设置> 应用 > Google Play 服务 > 权限” 并启用所有可用权限。对 Google Play 商店也一样。
(四)常见问题解答与其他项目的区别:像 Shashlik 或 Genimobile 这样的项目使用模拟器来运行 Android 环境,有自己的内核等,而 Anbox 在与主机操作系统相同的内核下运行 Android 系统,不需要像 QEMU 那样的仿真层,一切都直接在硬件上运行,这种方法还允许与主机操作系统更好地集成。
应用不工作的处理:如果应用程序依赖于特定的硬件功能,如 WiFi、蓝牙或电话,可能需要额外的工作来桥接来自主机系统的那些功能。截至目前,唯一能做的就是确保在这些功能不可用时应用程序正常运行。Anbox 使用 Android 7 引入的自由格式模式,允许多窗口系统,应用程序需要在自由格式模式下良好运行才能在 Anbox 中正常运行。