Today I am making a private side-project public I am working on for more than 1.5 years now. Back in 2015 I started working on a prototype of what I call Anbox today. It was born out of the idea of putting Android into a simple container based on LXC and bridging relevant parts over to the host operating system while not allowing any access to real hardware or user data. The Android applications should integrate well into the existing desktop environment like they were regular applications. There were quite a few problems to solve on the way to a really working implementation but it is now in a state that it makes sense to share it with a wider audience.
Anbox uses Linux namespaces (user, network, cgroup, pid, ..) to isolate the Android operating system from the host. For Open GL ES support Anbox takes code parts from the Android emulator implementation to serialize the command stream and send it over to the host where it is mapped on existing Open GL or Open GL ES implementations.
The source code is entirely available as open source. Most parts are licenses under the terms of the GPLv3 but a few are Apache-2.0 for compatibility reasons with code used from other projects.
Anbox itself is still in its early phase and is in a pre-alpha state where crashes and instability is expected. The next phase of development will focus on stability and bug fixing and will add more necessary features to integrated better with the host operating system.
If you’re now curious how Anbox looks like in action, have a look at the following video: