Add a http performance test script based on wrk
[iec.git] / src / type3_AndroidCloud / anbox-master / README.md
1 [![Snap Status](https://build.snapcraft.io/badge/anbox/anbox.svg)](https://build.snapcraft.io/user/anbox/anbox)
2 [![Build Status](https://travis-ci.org/anbox/anbox.svg?branch=master)](https://travis-ci.org/anbox/anbox)
3
4 # Anbox
5
6 Anbox is a container-based approach to boot a full Android system on a
7 regular GNU/Linux system like Ubuntu. In other words: Anbox will let
8 you run Android on your Linux system without the slowness of
9 virtualization.
10
11 ## Overview
12
13 Anbox uses Linux namespaces (user, pid, uts, net, mount, ipc) to run a
14 full Android system in a container and provide Android applications on
15 any GNU/Linux-based platform.
16
17 The Android inside the container has no direct access to any hardware.
18 All hardware access is going through the anbox daemon on the host. We're
19 reusing what Android implemented within the QEMU-based emulator for OpenGL
20 ES accelerated rendering. The Android system inside the container uses
21 different pipes to communicate with the host system and sends all hardware
22 access commands through these.
23
24 For more details have a look at the following documentation pages:
25
26  * [Android Hardware OpenGL ES emulation design overview](https://android.googlesource.com/platform/external/qemu/+/emu-master-dev/android/android-emugl/DESIGN)
27  * [Android QEMU fast pipes](https://android.googlesource.com/platform/external/qemu/+/emu-master-dev/android/docs/ANDROID-QEMU-PIPE.TXT)
28  * [The Android "qemud" multiplexing daemon](https://android.googlesource.com/platform/external/qemu/+/emu-master-dev/android/docs/ANDROID-QEMUD.TXT)
29  * [Android qemud services](https://android.googlesource.com/platform/external/qemu/+/emu-master-dev/android/docs/ANDROID-QEMUD-SERVICES.TXT)
30
31 Anbox is currently suited for the desktop use case but can be used on
32 mobile operating systems like Ubuntu Touch, Sailfish OS or Lune OS too.
33 However as the mapping of Android applications is currently desktop specific
34 this needs additional work to supported stacked window user interfaces too.
35
36 The Android runtime environment ships with a minimal customized Android system
37 image based on the [Android Open Source Project](https://source.android.com/).
38 The used image is currently based on Android 7.1.1
39
40 ## Installation
41
42 See our [installation instructions](docs/install.md) for details.
43
44 ## Supported Linux Distributions
45
46 At the moment we officially support the following Linux distributions:
47
48  * Ubuntu 16.04 (xenial)
49  * Ubuntu 18.04 (bionic)
50
51 However all other distributions supporting snap packages should work as
52 well as long as they provide the mandatory kernel modules (see kernel/).
53
54 ## Install and Run Android Applications
55
56 TBD
57
58 ## Build from source
59
60 ### Requirements
61
62 To build the Anbox runtime itself there is nothing special to know. We're using
63 cmake as build system. A few build dependencies need to be present on your host
64 system:
65
66  * libdbus
67  * google-mock
68  * google-test
69  * libboost
70  * libboost-filesystem
71  * libboost-log
72  * libboost-iostreams
73  * libboost-program-options
74  * libboost-system
75  * libboost-test
76  * libboost-thread
77  * libcap
78  * libsystemd
79  * mesa (libegl1, libgles2)
80  * libglm
81  * libsdl2
82  * libprotobuf
83  * protobuf-compiler
84  * python2
85  * lxc (>= 3.0)
86
87 On an Ubuntu system you can install all build dependencies with the following
88 command:
89
90 ```
91 $ sudo apt install build-essential cmake cmake-data debhelper dbus google-mock \
92     libboost-dev libboost-filesystem-dev libboost-log-dev libboost-iostreams-dev \
93     libboost-program-options-dev libboost-system-dev libboost-test-dev \
94     libboost-thread-dev libcap-dev libsystemd-dev libegl1-mesa-dev \
95     libgles2-mesa-dev libglm-dev libgtest-dev liblxc1 \
96     libproperties-cpp-dev libprotobuf-dev libsdl2-dev libsdl2-image-dev lxc-dev \
97     pkg-config protobuf-compiler python-minimal
98 ```
99 We recommend Ubuntu 18.04 (bionic) with **GCC 7.x** as your build environment.
100
101
102 ### Build
103
104 Afterwards you can build Anbox with
105
106 ```
107 $ git clone https://github.com/anbox/anbox.git
108 $ cd anbox
109 $ mkdir build
110 $ cd build
111 $ cmake ..
112 $ make
113 ```
114
115 A simple
116
117 ```
118 $ sudo make install
119 ```
120
121 will install the necessary bits into your system.
122
123 If you want to build the anbox snap instead you can do this with the following
124 steps:
125
126 ```
127 $ mkdir android-images
128 $ cp /path/to/android.img android-images/android.img
129 $ snapcraft
130 ```
131
132 The result will be a .snap file you can install on a system supporting snaps
133
134 ```
135 $ snap install --dangerous --devmode anbox_1_amd64.snap
136 ```
137
138 ## Run Anbox
139
140 Running Anbox from a local build requires a few more things you need to know
141 about. Please have a look at the ["Runtime Setup"](docs/runtime-setup.md)
142 documentation.
143
144 ## Documentation
145
146 You will find additional documentation for Anbox in the *docs* subdirectory
147 of the project source.
148
149 Interesting things to have a look at
150
151  * [Runtime Setup](docs/runtime-setup.md)
152  * [Build Android image](docs/build-android.md)
153  * [Generate Android emugl source](docs/generate-emugl-source.md)
154
155 ## Reporting bugs
156
157 If you have found an issue with Anbox, please [file a bug](https://github.com/anbox/anbox/issues/new).
158
159 ## Get in Touch
160
161 If you want to get in contact with the developers please feel free to join the
162 *#anbox* IRC channel on [Freenode](https://freenode.net/).
163
164 ## Copyright and Licensing
165
166 Anbox reuses code from other projects like the Android QEMU emulator. These
167 projects are available in the external/ subdirectory with the licensing terms
168 included.
169
170 The Anbox source itself, if not stated differently in the relevant source files,
171 is licensed under the terms of the GPLv3 license.