Developed by Google, Android is software stack that includes Linux, middleware and key applications. Given that Android applications are written in Java, and Google has done a stellar job of creating a software development environment (the ADK/SDK) for Android, while simultaneously giving it away, an Android Porting Kit may sound like another “because we can” kind of a project (“Hey Joe, let’s get together and build a better web server than Apache…”)
We think not, and here’s why: Originally intended for mobile devices, it is true that Android is stem to stern complete for anything that is mobile related. However, its open source and business friendly licensing are attracting interest by vendors outside of the handset market: mobile internet devices (MIDs), settop boxes (STBs), and even desktops to name a few. Tired of KDE and GNOME? How about running Android as your windows manager? Because you can!
But before rushing to pull down the latest Android sources from GIT, run “configure; make install”, and expecting to get a binary image called android, you may be in for a little surprise. It doesn’t work; at least not that way. Here are a few reasons why:
Android is ARM-biased – Android libraries and middleware are specific to the ARM processor architecture in many places. There is nothing wrong with this. ARM is widely deployed in the majority of mobile devices, a market for which Android was originally designed. However, retargeting to other markets means Android needs to support other popular embedded processors such as MIPS, Atom, and PowerPC, which are not present today.
Android doesn’t (yet) have an API for [...] – This is not a criticism but a matter of fact. Android isn’t designed for other markets. Consequently, it is not possible for the designers of Android to create a set of APIs that encompasses all embedded usages. What this implies is that to develop Android applications for non mobile platforms, developers must be prepared to engage in a mix of Java and C/C++ programming.
Android is ambivalent about JNI – Android Java libraries and middleware use JNI (Java Native Interface) liberally to invoke C/C++ code in shared libraries. Google developers, on the other hand, warned others against adopting the same approach. This conjures up the image of open source developers who would send vitriolic emails to Linksys alleging GPL violation while simultaneously ripping DVDs into AVIs to share on BitTorrent.
Viosoft’s Arriba Android Porting Kit (Arriba APK) is designed to help software developers and ODMs/OEMs overcome these challenges and to rapidly design and bring Android based products to market. It includes:
- A complete cross development environment, and a reference Linux kernel distribution to help the customers prepare their platforms for Android-readiness
- A port of Android to selected embedded platforms that the customers can use as a working reference, or a starting point that can be refined toward their final designs
- The Arriba debugger which provides visibility into all layers of the running Android system to help developers pinpoint difficult defect in C/C++ middleware or even kernel drivers
While Android is rapidly maturing and widely adopted, it is still relatively new technology. Viosoft believes that successful adoption of Android is very much dependent upon the vendor’s ability to understand the elegance of its design, cope with its complexity, and assimilate collateral defects. As such, the Arriba APK is the ideal companion when one sets out to conquer Android in a non mobile market.