Anbox:容器中的 Android
概述
Anbox 使用 Linux 命名空间(user、pid、uts、net、mount、ipc)来在容器中运行完整的 Android 系统,并在任何基于 GNU Linux 平台上提供 Android 应用。
容器内的 Android 无法直接访问任何硬件。所有硬件访问都通过主机上的 anbox 守护进程进行。我们重用基于 QEMU 的模拟器实现的 Android 中的 GL、ES 加速渲染。容器内的 Android 系统使用不同的管道与主机系统通信,并通过它发送所有硬件访问命令。
有关更多详细信息,请参考下文档:
Anbox 目前适合桌面使用,但也用在移动操作系统上,如 Ubuntu Touch、Sailfish OS 或 Lune OS。然而,由于 Android 程序的映射目前只针对桌面环境,因此还需要额外的工作来支持其他的用户界面。
Android 运行时环境带有一个基于 Android 开源项目镜像的最小自定义 Android 系统。所使用的镜像目前基于 Android 7.1.1。
安装
目前,安装过程包括一些添加额外组件到系统的步骤。包括:
- 启用用于 binder 和 ashmen 的非发行的树外内核模块。
- 使用 udev 规则为 /dev/binder 和 /dev/ashmem 设置正确权限。
- 能够启动 Anbox 会话管理器作为用户会话的一个启动任务。
为了使这个过程尽可能简单,我们将必要的步骤绑定在一个 snap(见 https://snapcraft.io ) 中,称之为 “anbox-installer”。这个安装程序会执行所有必要的步骤。你可以在所有支持 snap 的系统运行下面的命令安装它。
$ snap install --classic anbox-installer
另外你可以通过下面的命令下载安装脚本。
$ wget https://raw.githubusercontent.com/anbox/anbox-installer/master/installer.sh -O anbox-installer
请注意,我们还不支持除所有 Linux 发行版。请查看下面的章节了解支持的发行版。
运行下面的命令进行安装。
$ anbox-installer
它会引导你完成安装过程。
注意: Anbox 目前处于 pre-alpha 开发状态。不要指望它具有生产环境你需要的所有功能。你肯定会遇到错误和崩溃。如果你遇到了,请不要犹豫并报告它们!
注意: Anbox snap 目前 完全没有约束,因此它只能从边缘渠道获取。正确的约束是我们想要在未来实现的,但由于 Anbox 的性质和复杂性,这不是一个简单的任务。
已支持的 Linux 发行版
目前我们官方支持下面的 Linux 发行版:
- Ubuntu 16.04 (xenial)
未测试但可能支持的:
- Ubuntu 14.04 (trusty)
- Ubuntu 16.10 (yakkety)
- Ubuntu 17.04 (zesty)
安装并运行 Android 程序
从源码构建
要构建 Anbox 运行时不需要特别了解什么,我们使用 cmake 作为构建系统。你的主机系统中应已有下面这些构建依赖:
- libdbus
- google-mock
- google-test
- libboost
- libboost-filesystem
- libboost-log
- libboost-iostreams
- libboost-program-options
- libboost-system
- libboost-test
- libboost-thread
- libcap
- libdbus-cpp
- mesa (libegl1, libgles2)
- glib-2.0
- libsdl2
- libprotobuf
- protobuf-compiler
- lxc
在 Ubuntu 系统中你可以用下面的命令安装所有的依赖:
$ sudo apt install 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 libdbus-1-dev \
libdbus-cpp-dev libegl1-mesa-dev libgles2-mesa-dev libglib2.0-dev \
libglm-dev libgtest-dev liblxc1 libproperties-cpp-dev libprotobuf-dev \
libsdl2-dev lxc-dev pkg-config protobuf-compiler
之后用下面的命令构建 Anbox:
$ mkdir build
$ cd build
$ cmake ..
$ make
一个简单的命令会将必要的二进制安装到你的系统中,如下。
$ make install
如果你想要构建 anbox snap,你可以按照下面的步骤:
$ mkdir android-images
$ cp /path/to/android.img android-images/android.img
$ snapcraft
结果会有一个 .snap 文件,你可以在支持 snap 的系统上安装。
$ snap install --dangerous --devmode anbox_1_amd64.snap
运行 Anbox
要从本地构建运行 Anbox ,你需要了解更多一点。请参考“运行时步骤”文档。
文档
在项目源代码的子目录下,你可以找到额外的关于 Anbox 的文档。
有兴趣可以看下:
报告 bug
如果你发现了一个 Anbox 问题,请提交 bug。
原文发布时间为:2017-04-21
本文来自云栖社区合作伙伴“Linux中国”
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《 Java并发编程从入门到精通》目录和序言
目 录 第一部分:线程并发基础 第1章 概念部分 1 1.1 CPU核心数、线程数 (主流cpu,线程数的大体情况说一下) 1 1.2 CPU时间片轮转机制 2 1.3 什么是进程和什么是线程 4 1.4 进程和线程的比较 5 1.5 什么是并行运行 7 1.6 什么是多并发运行8 1.7 什么是吞吐量 9 1.8 多并发编程的意义及其好处和注意事项10 1.9 分布式与并发运算关系 11 1.10 Linux和Window多并发可以采取不的一样机制(apache和tomcat??) 6 第2章 认识Java里面的Thread 12 2.1 线程的实现三种方法 (先感受一下创建几个多线程方法实例演练)12 2.2 Thread里面的属性和方法 (通过工具看看能不能监控到thread里面的一些属性值)16 2.3 线程的生命周期 19 2.4 什么是守护线程 31 2.5 线程组 33 2.6 当前线程副本ThreadLocal(用意和实际应用场景) 35 2.7 线程异常的处理(单个和组)38 第3章 Thread安全 39 3.0 线程的内存模型 3.1 什么是不安全(写个代码例子...
- 下一篇
谷歌发布基于机器学习的Android APP安全检测系统:Google Play Protect
Google Play作为众所周知的在线应用市场,因为审查制度的松散,经常会有一些恶意软件伪装成其他应用混入其中。此前阿里聚安全小编就报道了2例关于恶意软件伪装在Google Play上的事件:《Google Play商店的“系统更新”隐藏间谍软件,数百万用户中招》和《打开手机电筒就泄露了银行卡密码?》。一旦用户从应用市场下载APP到手机上后,谷歌便无法监视和检测应用程序的恶意行为。 近日,谷歌为Android用户带来了一个好消息。在Google I/O2017大会上,谷歌发布了一种新的机器学习Android APP安全检测系统:Google Play Protect,他可以通过机器学习和APP使用情况来分析识别出APP的恶意行为。新的系统内置于Google Play Store中,用户无需另外下载安装。它时刻在后台运行,保护用户手机、数据和APP的安全。在未来几周,所有的Android用户均可体验到Google Play Protect的功能。 Google Play Protect主要功能应用程序扫描手机定位/防盗安全浏览 应用程序扫描应用程序扫描功能时刻在手机后台运行,为10亿A...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装