听闻少年二字,当与平庸相斥。这篇文章主要讲述Arch Linux 安装 Anbox相关的知识,希望能为你提供帮助。
镜像下载、域名解析、时间同步请点击 阿里云开源镜像站
Anbox 介绍
- Anbox 是一个可以在 GNU/Linux 发行版上运行 android App 的容器,是一个开源兼容层。
- 其工作原理是在 LXC 容器中运行 Android 环境,重新创建 Android 的目录结构作为可挂载的 loop 镜像,同时使用本机 Linux 内核来执行应用,所以没有虚拟化的开销,非常轻量级且保障了运行速度。
- 每个 Android 应用将在一个单独窗口打开,就像 Linux 本地应用程序一样。
- Anbox 的 dkms 模块在内核版本 ≥ 5.7 下不会工作。
- 需要运行带有 ashmem 和 binder 模块的内核,但它们不是 Arch Linux 默认内核 ( linux ) 的一部分。
- 确保系统安装了 Linux 内核头文件:
sudo pacman -S linux-headers
- 安装 Anbox :
- anbox-image 是官方镜像,可根据需要选择其他镜像
- anbox-git 是 Anbox 运行的容器
- anbox-modules-dkms-git 是 Anbox 所需的内核模块
yay -S anbox-image anbox-git anbox-modules-dkms-git
- 加载 DKMS 模块:
sudo modprobe ashmem_linux sudo modprobe binder_linux
检查设备:
ls -1 /dev/ashmem,binder
看到如下信息,说明模块加载成功:
/dev/ashmem /dev/binder
- 挂载 binderfs
- 启动服务,设置开机自启:
sudo systemctl start anbox-container-manager.service sudo systemctl enable anbox-container-manager.service
- Arch Wiki 提供了三种连网方案:NetworkManager、systemd-networkd、anbox-bridge。
- 笔者采用 anbox-bridge 方式:
- 下载 anbox-bridge.sh 脚本到
/usr/bin
目录下,并赋予可执行权限。 - 创建文件
/etc/systemd/system/anbox-container-manager.service.d/enable-anbox-bridge.conf
并写入一下内容:
[Service] ExecStartPre=/usr/bin/anbox-bridge.sh start ExecStopPost=/usr/bin/anbox-bridge.sh stop
- 下载 anbox-bridge.sh 脚本到
- adb ( Android Debug Bridge ) 是安卓开发调试工具,我们用它来管理 Anbox 内的安卓应用。
sudo pacman -S android-tools
- 安装应用
adb install /path/to/app.apk
- 查看应用列表
adb shell pm list packages
- 卸载用户应用
adb uninstall app.name
- 卸载系统应用
adb uninstall --user 0 app.name
- 某些应用打开后,窗口上方的标题栏消失,导致整体画面上移但实际点击区域未移动,且下方留有黑边。
- 未挂载 binderfs 时,开关机会提示
[FAILED]Failed to Mount Android Binder File System
。 - 按 Arch Wiki 步骤挂载binderfs后,开关机提示
[FAILED]Failed to Mount /dev/binderfs
。
推荐阅读
- 北亚数据恢复raid损坏导致硬盘灯报警离线存储无法使用的数据恢复案例
- 类加载的时机
- 关于String对象到底占多少字节()
- HotSpot 虚拟机对象探秘
- MYSQL索引优化法则
- JVM 内存结构
- 10个显示彩色字符的批处理代码
- JVM-03
- Tomcat10-记录踩坑