I recently spent some time looking at Android and thought I would make my first product/technical post about it.
This is not an extensive review - just a quick, high level overview/notes on what I saw
- Android is built on a Linux kernel and uses Linux drivers. The stack has a clear demarcation of functionality, and each part is modular and replaceable.
- The Architecture is built to handle the memory management issues and the interrupt driven activities on a mobile phone.
- Applications are split into
o Activities (for UI)
o Intent receivers (to register for external events)
o Services (for background tasks), and
o Content provider (to share data with other apps - for example access the contact information...)
- Android supports the ability for each piece/application to interact with each other and share data. i.e., the framework is pretty much built for mashups.
- Android is open to the extent that it is possible to replace major components (like messaging/phone…). Goes back to Google’s mantra of “Trust the user”.
o This means that replacing components is easy and is system wide. For example, replacing the photo gallery means that all the applications will now use the new photo gallery.
Some interesting services provided by Android -
- Location manager
o Provides location information. Can build apps such as register to be notified when close to friend.
- XMPP service
o Contact users on other android phones
o Build peer to peer functionality
o I found some indication that Google was planning to replace the XMPP service with a higher level “GTalkService”. Hopefully that is not the case.
o Built in views - Date view, Image view, Map view, etc
o Open GL ES support for advanced graphics
o Ability to embed browser using the WebKit browser widget
- There was no mention of any software distribution mechanism, which kind of makes sense considering it is supposed to be an open system. But that will end up being a need that would be filled by either Google or Carriers or some 3rd party vendor. We need to watch that development so that we partner with the right folks.
The powerful SDK and architecture seems to make the process of building for this platform surprisingly easy. In spite of being early stage, Android seemed to have a reasonably mature SDK, with a decent emulator. The fact that it is Java based, has a number of useful libraries, as well as the ability to access core capabilities of the phone should make it attractive for developers to build on the platform.
I think there are a number of reasons why we can expect high adoption of Android in the marketplace -
1. Android opens up the traditionally tight control on the client placed by Carriers. In many cases developers have to fork over a large percentage (20-30) of their revenue to Carriers (or Apple in the case of the iPhone). They also have to meet difficult platform/device specific security restrictions. Android eases these restrictions. Users can install anything they want. It banks on users being intelligent in their selection of the software they choose to run on their phones.
2. More manufacturers (compared to iPhone) will build phones using Android, so a larger number of phones on Android should be out in the market once it is released.
3. Software costs are around 20% of the handset costs. The fact that Android is free could convince Carriers to select Android in the hopes of delivering cheaper SmartPhones and increasing data usage.
4. There already are signs that Carriers are moving away from locked networks - consumers can already buy unlocked phones, as well as phones that have Wi-Fi capabilities.
5. The formation of the Open Handset Alliance, and the set of companies that are a part of it, is a good sign that Android has a chance for success.
While there are reasons for advocating caution (next section) the above indicators seem to show that the market will have a good number of Android phones by this time next year. Even though it is a different platform, the iPhone has contributed to this buzz by releasing a developer SDK. All of which indicate that the number of developers building mobile applications might be reaching a critical mass. In any case, the buzz that Google has generated with their announcements, the SDK’s availability, the developer contest, and the formation of the OHA is very significant.
Reasons Android might not be successful -
1. This could be because of Carriers continuing to push closed ecosystems & vertically integrated services rather than an open system. The biggest US Carriers (AT&T and Verizon) are not a part of the Open Handset Alliance, and are in fact throwing their weight behind other platforms (iPhone and LiMo).
- However, these Carriers aren’t discounting the use of Android.
2. Android is not an answer for existing phones
3. The usability of the UI over the long term is an unknown because it since it is not tied to any hardware. Very easy to go the patch of Windows Mobile. One of the reasons why the iPhone is a success is that Apple could focus on and build for only one hardware platform.
4. While it is a very nicely architected SDK, it still is something new. Developers need to ramp up to using it.
In addition to the above, there has been a lot of activity recently on the other (competing) platforms.
Alternate Platforms -
1. LiMo (and now LiPS merged with it) already has a number of phones out in the market. LiMo also has with DoCoMo, Vodafone, Motorola, and Samsung among its members)
2. Others platforms include OpenMoko, Gnome Mobile, and Embedded (another initiative from within the open source community).
3. iPhone – the platform is getting some good reviews, and the phone is already out in the market. Apple recently announced the SDK for the iPhone.
4. Symbian – Nokia recently announced that they were going to own Symbian completely and open it up.
5. WM – Microsoft is coming out with WM 7
6. Blackberry/RIM – probably one of the most closed platforms, but owns a substantial market share of Smart Phones. They are showing clear signs of trying to increase penetration in the consumer market, which requires a lot more applications.
In spite of the above, I think that for anyone looking into it (depends on your situation of course), it might be worth investing in Android because of the "Open" aspects and the buzz.
My Android bookmarks on del.icio.us