Canonical is building an Android execution environment that will make it possible for Android applications to run on Ubuntu and potentially other conventional Linux distributions. The effort will open the door for bringing Android's growing ecosystem of third-party software to the desktop.

Google's Linux-based Android platform is attracting a lot of attention. The new version significantly improves the platform's reliability and could make it look a lot more appealing to carriers and handset makers. The availability of an experimental x86 port has caused some people to speculate that Android might have a place in the netbook market.

As we explained in detail in our article about Android's viability on netbooks last month, Google's platform is well-suited for phones and tablets but isn't ready for netbooks yet. Intel's Moblin project and Canonical's Ubuntu Netbook Remix are better suited for such devices because they provide a more netbook-friendly user experience, support running existing desktop Linux software, and have better compatibility with Atom chips.

Android uses the Linux kernel, but it isn't really a Linux platform. It offers its own totally unique environment that is built on Google's custom Java runtime. There is no glide path for porting conventional desktop Linux applications to Android. Similarly, Java applications that are written for Android can't run in regular Java virtual machine implementations or in standard Java ME environments. This makes Android a somewhat insular platform.

Canonical is creating a specialized Android execution environment that could make it possible for Android applications to run on Ubuntu desktops in Xorg alongside regular Linux applications. The execution environment would function like a simulator, providing the infrastructure that is needed to make the applications run.

Some technical details about the Android execution environment were presented by Canonical developers Michael Frey and Debbie Beliveau at the Ubuntu Developer Summit on Tuesday in Barcelona during a session hosted by Michael Casadevall. The developers have built a working prototype of the execution environment. They successfully compiled it against Ubuntu's libc instead of Android's custom libc and they are running it on a regular Ubuntu kernel. They intend to cut out Android-specific components that are not needed to make the software run on Ubuntu.

Android's sophisticated interprocess communication system, which is called Binder, requires a special kernel driver in order to run properly. The driver is in the kernel staging tree and is not enabled—a problematic impediment for the Android execution environment developers. Their current prototype is using a temporary workaround to bypass Binder, but they hope that the necessary patches can be enabled in the kernel for the next Ubuntu release so that the execution environment can work properly.

Another important part of the project roadmap is to develop a special interoperability shim that will expose native platform services and hardware to the Android execution environment. They have already implemented some of the infrastructure for this layer in library called libwrap. They are also exploring ways to make the Ubuntu filesystem partially accessible in the Android execution environment so that users can access their files and folders from Android applications.

There are obviously a lot of limitations and key features that are still missing. The project is at an early stage of development and needs a lot of work before it will be practical for use. Despite these limitations, the work that has been done so far represents a significant achievement.

The source code of the execution environment isn't available yet, but the developers plan to publish it soon. They hope that making it available and inviting the community to participate will help build momentum around the project and accelerate development.

As Android's platform gains a stronger following and attracts commercial software vendors, the ability to use Android software on a conventional Linux distro could be a significant asset for users and hardware vendors. It would also boost the inherent portability of Android applications, potentially making Android a more palatable target for some third-party application developers.