转自:Linux中国

本文由LCTT原创编译,Linux中国荣誉推出

Anbox 以基于容器的方式,在像 Ubuntu 这样的常规的 GNU Linux 系统上启动一个完整的 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 运行时环境带有一个基于 [5]镜像的最小自定义 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

另外你可以通过下面的命令下载安装脚本。

$wgethttps://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 系统中你可以用下面的命令安装所有的依赖:

$sudoapt 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:

$mkdirbuild$cdbuild$ cmake ..$make

一个简单的命令会将必要的二进制安装到你的系统中,如下。

$makeinstall

如果你想要构建 anbox snap,你可以按照下面的步骤:

$mkdirandroid-images$cp/path/to/android.img android-images/android.img$ snapcraft

结果会有一个 .snap 文件,你可以在支持 snap 的系统上安装。

$ snap install --dangerous --devmode anbox_1_amd64.snap

运行 Anbox

要从本地构建运行 Anbox ,你需要了解更多一点。请参考[6]文档。

文档

在项目源代码的子目录下,你可以找到额外的关于 Anbox 的文档。

有兴趣可以看下:

报告 bug

如果你发现了一个 Anbox 问题,请[9]。

取得联系

如果你想要与开发者联系,你可以在 [10] 中加入 #anbox 的 IRC 频道。

版权与许可

Anbox 重用了像 Android QEMU 模拟器这样的其他项目的代码。这些项目可在外部/带有许可声明的子目录中得到。

anbox 源码本身,如果没有在相关源码中声明其他的许可,默认是 GPLv3 许可。

anbox android 镜像,Anbox:容器中的 Android相关推荐

  1. anbox android 镜像,Anbox将使Ubuntu手机能运行Android应用程序

    Anbox 就在支持Ubuntu Phone设备的OTA-3软件更新发布两天之后,Ubuntu Touch维护者UBports现在开始为用户提供即将到来的Android应用程序支持. [UBports ...

  2. 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android

    背景 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android 应用程序? 运行调式一个Android项目,写下必要的代码后,接下来的任务是在模拟器或手机上运 ...

  3. Android那些事儿 成长中的Android(1)

    Android 是近年来在移动设备行业相当火热的词汇,在此我从交互设计的角度整理了此文章,文章分为三个部分,跟大家讨论Android的那些事儿. 第一部分:成长中的Android; ◆什么是Andro ...

  4. Android 在布局容器中动态添加控件

    这里,通过一个小demo,就可以掌握在布局容器中动态添加控件,以动态添加Button控件为例,添加其他控件同样道理. 1.addView 添加控件到布局容器 2.removeView 在布局容器中删掉 ...

  5. android eclipse services,Eclipse中调试Android Framework本地代码模块部分过程记录

    环境:Amlogic S905M2 + ubunt12.04 + win7 + adt_bundle_linux + Android SDK 过程: 1. 为避免用Eclipse基础版本(Luna)后 ...

  6. weex android app例子,weex中修改android app图标和欢迎页

    修改欢迎页背景 1.图片放到platforms/android/app/src/main/res/drawable-xxxx下面,图片必须是png格式,否则会报错:然后修改platforms/andr ...

  7. Android xml资源文件中@、@android:type、@*、?、@+含义和区别

    一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...

  8. 索尼x8 android,高性价比索尼爱立信中端Android机X8

    谷歌的Android系统看来是要走普及化的道路,中端的Android机型现在是越来越多了,索尼爱立信X8是一款时尚的中端Android手机,其内置有一颗600MHz处理器,搭载了Android 1.6 ...

  9. corona sdk android,在Corona SDK中为Android添加标记

    我无法添加标记. (仅在Android设备上尝试过)我想在加载地图后立即添加标记.得到它的工作增加了延迟,但不能通过添加标记或再次缩放地图来使其工作(使用setRegion).在Corona SDK中 ...

最新文章

  1. 强化学习vs遗传算法-人工智能在模拟领域的应用
  2. ListView position
  3. 高并发測试工具webbench
  4. Linux复习资料——一篇文章学会安装Java(免环境配置)以及tomcat服务
  5. kotlin学习笔记——重载操作符
  6. mysql da_DA面板如何管理Mysql数据库?
  7. 《Two Days DIV + CSS》读书笔记——CSS选择器
  8. Django模型关系
  9. requests结果显示“请开启JavaScript并刷新该页”,selenium不用cookie解决
  10. 1.1.从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。
  11. 2022年,计算机er保研选计科还是电信?
  12. rx6600怎么样 rx6600显卡相当于什么n卡
  13. canvas.toDataURL()降低图片质量,以减少图片上传大小
  14. 函数原型中int *arr和int arr[]
  15. [VCS]filelist.list的做法
  16. Best Time to Buy and Sell Stock III
  17. 【水质预测】基于matlab模糊神经网络水质预测【含Matlab源码 1923期】
  18. stm32与linux通过protobuf打包数据并进行通信
  19. 支持天合化工上市,中国的世界的。全球股市欺诈案慢慢减少
  20. OpenCV每日函数 计算摄影模块(1) 图像修复算法 inpaint函数

热门文章

  1. vue之表格数据渲染,实现点击表格某列按钮弹出框显示剩余数据(模态框知识点)
  2. C#把月日年帶有 AM、PM的时间格式转换为正常时间格式
  3. 百度竞价推广账户常见问题及调整方法
  4. 华为ENSP模拟器开启SSH服务
  5. CC00229.CloudKubernetes——|KuberNetes细粒度权限控制.V13|——|Ratel.v01|k8s资源管理平台部署|
  6. 基于小程序制作一个猜拳小游戏
  7. java类详解_JAVA 内部类详解
  8. 设计模式学习之访问者模式
  9. 【网页特效】12 个炫酷背景特效库
  10. 苹果手机自带软件删除了怎么恢复_苹果手机数据被删除如何来恢复数据???...