As part of the Android Builders Summit I presented the Headless Android work I've been doing as part of Cyborgstack. The presentation PDF is already available on the Cyborgstack website, but I wanted to post this brief blog just to explain some basics.

First, you can get the Headless Android branch of Cyborgstack like this:

$ repo init -u git://github.com/cyborgstack/android.git -b headless
$ repo sync

Essentially, Headless Android is the AOSP but WITHOUT:

  • SurfaceFlinger
  • WindowManager
  • WallpaperService
  • InputMethodManager

It gives you is all the Android framework but for ui-less systems (no FB.) What it means, is that, save for Activities, you can use the standard Android development tools (Eclipse, SDK/NDK, etc.) to create apps that use:

  • ContentProviders
  • Services
  • BroadcastReceivers

Why would you want this instead of using "Embedded Linux"? Honestly I was very skeptical when some developers first mentioned to me that they were interested in doing this. I was in fact very dismissive of it. But I kept getting more and more inquiries about this. So I decided to bite the bullet and give it a try.

Now that I have, I think there are 2 clear benefits to using this instead of "embedded Linux":

  1. you get one platform for all your device development, whether it has a UI or not
  2. your devices become programmable by any developer that knows the Android API (and, as you may know, there's growing number of those.)

That said, what I've done is very much a proof of concept. It's in fact a dirty hack at this point. Please don't ship this just yet. It needs a lot more eyeballs and certainly a lot more work. But, it's good enough to give you a taste of what's possible and allow you play with it.