Summary: Run Wayland compositor in Android
Purpose: Investigate the combination of "standard" embedded Linux (a.k.a. GNU/Linux) graphical applications mixed with Android graphical applications.
Rationale: In our early discussions with adopters of Android into Automotive, some wished to reuse existing legacy code or to continue to use the vast amount of "Standard" Linux technology and achieve synergies with the Desktop/and Server implementations of Linux that follow the GNU/Linux track.
Specifically some companies are already considering combinations of Linux and Android in the car, often implemented using virtualization or container technologies. This project instead investigates a more direct side-by-side execution of components in one environment, but synergies with virtualization/container based systems are expected.
This project aims to investigate running a Wayland compositor (and additional GNU/ Linux components that are required dependencies) in parallel with Android system components for graphics and HMI. The opportunity is to achieve even more capable, flexible and future-proof systems.
This mixing of standards might be met with a "Linux on Android" or a "Android on Linux" approach. Specifically this project investigates making Android the primary operating system, but to have the primary HMI compositor being Wayland based, thus enabling Android and Wayland-based applications to be integrated. The intention is to keep the Android system functioning with as little changes as possible, still allowing this interaction.
There are real needs driving the desire to combine these two technology stacks but the project should first be considered a kind of research into what is possible to do and not.
- Set up a shared code repository under github.com/GENIVI/wayland-android to collect up relevant software components, build instructions/scripts, and configurations
- Wayland compositor, e.g. Weston
- Dependencies for the above
- Adaption code to make these components compatible in an Android for Automotive environment. (Consider differences in libc, and supported kernel features)
- Client code integrated in Android to take Android graphical surfaces and present them to the Wayland compositor using Wayland protocol.
- Where necessary, create temporary forked versions of some components (we know there are many adjustments necessary to make standard Linux components build on an Android system)
Prior work and references:
- SPURV, by Collabora.