README.md 3.2 KB
Newer Older
S
Simon Fels 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# Anbox

Anbox is container based approach to boot a full Android system.

## Overview

Anbox uses Linux namespaces (user, pid, uts, net, mount, ipc) to run a
full Android system in a container and provide Android applications on
any platform.

The container itself does not run as root but as a unprivileged user.
It just need to be able to perform a few operations to setup a
container like spawning up new namespaces, chroot'ing to a rootfs etc.

Android inside the container has no direct access to any hardware. All
hardware access is going through the anbox daemon. We're reusing what
Android has implemented for the Qemu based emulator. The Android system
inside the container uses different pipes to communicate with the host
system and sends all hardware access commands through these. OpenGL
rendering is provided through this.

For more details have a look at the following documentation pages:

 * Android Hardware OpenGLES emulation design overview
   (https://goo.gl/O2Yi6x)
 * Android Qemu fast pipes (https://goo.gl/jl4GeS)
 * The Android "qemud" multiplexing daemon (https://goo.gl/DeYa5J)
 * Android Qemud services (https://goo.gl/W8Lx6t)

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
## Installation

Anbox is available as a snap in the public Ubuntu Store. Currently it
is only available in the edge channel and requires to be installed in
devmode as we don't have proper confinement for it in place yet.

Additionally you need to manually load the binder and ashmem kernel
drivers everytime as we build them out-of-tree with a hack as this
isn't officially supported. Before you start anbox you always need
to execute

$ cd anbox
$ scripts/load-kmods.sh

Anbox can be installed from the Ubuntu Store with

$ snap install --edge --devmode anbox

Afterwards run it with

$ anbox

After the first installation the container management service needs
a few minutes to setup the container the first time before it is
available.

Applications can be launched via the launch subcommand of the anbox
binary. For example

$ anbox launch --package com.android.settings

## Build from source

To build the Anbox runtime itself there is nothing special to know
about. We're using cmake as build system.

$ mkdir build
$ cd build
$ cmake ..
$ make

That will build the whole stack. A simple

$ make install

will install the necessary bits into your system.

S
Simon Fels 已提交
77 78
## Copyright and Licensing

S
Simon Fels 已提交
79 80
Anbox reuses code from other projects like the Android Qemu emulator.
These projects are available in the external/ subdirectory with the
S
Simon Fels 已提交
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
licensing terms included.

The anbox source itself (in src/) is licensed under the terms of
the GPLv3 license:

Copyright (C) 2016 Simon Fels <morphis@gravedo.de>

This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License version 3, as published
by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranties of
MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program.  If not, see <http://www.gnu.org/licenses/>.