- Notifications
You must be signed in to change notification settings - Fork0
Anbox is a container-based approach to boot a full Android system on a regular GNU/Linux system
License
ENJ1/anbox
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Anbox is a container-based approach to boot a full Android system on aregular GNU/Linux system like Ubuntu. In other words: Anbox will letyou run Android on your Linux system without the slowness ofvirtualization.
Anbox uses Linux namespaces (user, pid, uts, net, mount, ipc) to run afull Android system in a container and provide Android applications onany GNU/Linux-based platform.
The Android inside the container has no direct access to any hardware.All hardware access is going through the anbox daemon on the host. We'rereusing what Android implemented within the QEMU-based emulator for OpenGLES accelerated rendering. The Android system inside the container usesdifferent pipes to communicate with the host system and sends all hardwareaccess commands through these.
For more details have a look at the following documentation pages:
- Android Hardware OpenGL ES emulation design overview
- Android QEMU fast pipes
- The Android "qemud" multiplexing daemon
- Android qemud services
Anbox is currently suited for the desktop use case but can be used on mobileoperating systems likeUbuntu Touch orpostmarketOS(installation instructions).However this is still a work in progress.
The Android runtime environment ships with a minimal customized Android systemimage based on theAndroid Open Source Project.The used image is currently based on Android 7.1.1
See ourinstallation instructions for details.
At the moment we officially support the following Linux distributions:
- Ubuntu 18.04 (bionic)
- Ubuntu 20.04 (focal)
However all other distributions supporting snap packages should work aswell as long as they provide the mandatory kernel modules (seedocumentation).
You can install Android applications from the command line using adb.
adb install xyz.apk
The apk files you will sometimes find on the internet tend to only have armsupport, and will therefore not work on x86_64.
You may want to installF-Droid to get applicationsgraphically. Note that the Google Play Store will not work as is, because itrelies on the proprietary Google Play Services, which are not installed.
To build the Anbox runtime itself there is nothing special to know. We're usingcmake as build system. A few build dependencies need to be present on your hostsystem:
- libdbus
- google-mock
- google-test
- libboost
- libboost-filesystem
- libboost-log
- libboost-iostreams
- libboost-program-options
- libboost-system
- libboost-test
- libboost-thread
- libcap
- libexpat1-dev
- libsystemd
- mesa (libegl1, libgles2)
- libglm
- libsdl2
- libprotobuf
- protobuf-compiler
- python3
- lxc (>= 3.0)
On an Ubuntu system you can install all build dependencies with the followingcommand:
$ 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 libexpat1-dev libsystemd-dev libegl1-mesa-dev \ libgles2-mesa-dev libglm-dev libgtest-dev liblxc1 \ libproperties-cpp-dev libprotobuf-dev libsdl2-dev libsdl2-image-dev lxc-dev \ pkg-config protobuf-compiler python3-minimal
We recommend Ubuntu 20.04 (focal) as your build environment.
Afterwards you can build Anbox with
$ git clone https://github.com/anbox/anbox.git --recurse-submodules$ cd anbox$ mkdir build$ cd build$ cmake ..$ make
A simple
$ sudo make install
will install the necessary bits into your system.
If you want to build the anbox snap instead you can do this with the followingsteps:
$ ARCH=$(uname -m)$ cp /path/to/android.img data/android-images/android-$ARCH.img$ snapcraft
The result will be a .snap file you can install on a system supporting snaps
$ snap install --dangerous --devmode anbox_1_amd64.snap
Running Anbox from a local build requires a few more things you need to knowabout. Please have a look at the"Runtime Setup"documentation.
You will find additional documentation for Anbox in thedocs subdirectoryof the project source.
Interesting things to have a look at
If you have found an issue with Anbox, pleasefile a bug.
If you want to get in contact with the developers please feel free to join the#anbox IRC channel onFreenode.
Anbox reuses code from other projects like the Android QEMU emulator. Theseprojects are available in the external/ subdirectory with the licensing termsincluded.
The Anbox source itself, if not stated differently in the relevant source files,is licensed under the terms of the GPLv3 license.