TYPE3
[iec.git] / src / type3_AndroidCloud / anbox-master / docs / runtime-setup.md
diff --git a/src/type3_AndroidCloud/anbox-master/docs/runtime-setup.md b/src/type3_AndroidCloud/anbox-master/docs/runtime-setup.md
new file mode 100644 (file)
index 0000000..8f07eeb
--- /dev/null
@@ -0,0 +1,35 @@
+# Overview
+
+The Anbox runtime consists mainly of two separate instances:
+
+ * container manager
+ * session manager
+
+The container manager has the job of managing the container setup and maintenance
+during its lifetime. It has the responsibility to start the LXC environment we're
+using to run the Android system.
+
+The session manager runs inside the session of a user logged into the Linux system.
+It will communicate over several sockets with the Android instance running inside
+the container and provide integration with the Linux system. It also acts as a
+multiplexer to map Android applications into single windows on the desktop
+environment. Currently all application windows are owned by the same process
+(the session manager). The application logic itself is still in a separate process
+inside the Android container.
+
+The following picture shows an overview over the architecture:
+
+![Anbox architecture](architecture.png)
+
+## Application Mapping
+
+Android applications are mapped into single windows within the desktop environment.
+This is achieved by plugging into the Android hwcomposer HAL module which receives
+a set of layers to composite on a screen. Anbox tells SurfaceFlinger through its
+hwcomposer implementation to get a layer for each application and combines this with
+additional information it receives from the Android WindowManager to map individual
+layers to applications. For more details please look into the implementation at
+
+ * android/hwcomposer
+ * src/anbox/graphics/layer_composer.cpp
+ * src/anbox/wm/manager.cpp