Thursday, February 16, 2012

Why Headless Android?

I have been asked several times, “What is the point of headless Android?” It’s not hard to see why the question is asked. Android, in essence, is a specialized user interface for a phone or tablet platform that runs on the Linux kernel. The Android development team has done a fantastic job to create a platform that application developers can build great apps for phones and tablets. Because they focused on the platform under the applications, just as much as they focused on the applications themselves, the Android team also developed a world class platform framework.

For some, using headless Android comes down to commonality. If you have development efforts where you have two products (for example), one with a UI and one without, then keeping those platforms consistent from a development stand point just makes sense. Being able to write code that you can share between the two platforms is essential for maintenance.

While that use case is an interesting one, it is by no means (in my opinion) the biggest reason developers should care about headless Android. I’ll tell you why.

Five years ago, if you asked just about any embedded developer what they were going to use as the operating system for their embedded hardware (with or without a UI), most of them would say Linux. It was a smart choice. Having control of your destiny (so to speak) can be absolutely critical to the success of a project, especially if you aren’t one of the 800 pound gorillas. For smaller companies building embedded devices, Linux offered the freedom to succeed despite the common road blocks that often beset embedded projects. For example, if I have access to the kernel source, I can debug that lousy DMA controller bug that is preventing my audio from working. It was a wonderful world, if you liked that sort of thing.

Fast forward to today. While embedded Linux is still a fantastic choice for embedded devices, more and more companies are looking for ways to improve over the roll-your-own custom Linux environment that most embedded Linux developers work in. Sure, there are companies that build BSPs that have common utilities and libraries, but that can only get you so far.

Enter Android. For phone developers it is like what embedded Linux was to embedded developers ten years ago. A boon! Finally a widely popular development environment that included an Integrated Development Environment (IDE), a great set of debugging tools, a rich set of off-the-shelf libraries, and a killer user interface. PLUS, you can modify it to your hearts content. Power to the programmers!

As a non-phone developer and embedded Linux fanatic, I have to admit that for phones Android is great, but what about all the millions of devices that aren’t phones, and for that matter aren’t tablets, and may not even have a user interface? With a bit of work, those of us not doing phones can have our cake and eat it too...

There are three reasons I believe headless Android will catch on in popularity as more developers begin to use it.

1. Development Tools - Having an IDE and graphical debugger that “just work” with an easy way to deploy, test, debug, and package your software is a huge time saver.

2. The Platform - Leveraging the built in Android system services architecture can save a huge amount of time and effort. Built in IPC, memory management, service “keep-alive” code, and package management also saves a lot of time and effort. Every embedded devices needs most, if not all of these things, so leveraging a system that is already proven has huge advantages.

3. Knowledge - Since Android is a popular platform, there is a growing community of knowledgeable software engineers that understand the in’s and out’s of the system. Training someone on a roll-your-own solution can take months. Leveraging a known platform can dramatically increase productivity. Along with this the number of books and websites devoted to Android is growing all the time.

There are many other reasons for utilizing the platform offered by the Android system. Why reinvent the wheel? Especially when the wheels work so great and come with tires, axles, and a power train?

No comments:

Post a Comment