| About this blog post Unlike the Official Google articles that are mostly praising Android as Mobile platform, this article covers practical development experiences with Android platform. Authors of this article have prior practical experiences in web and desktop enterprise software development and have recently developed few Java applications for Android 2.1-update1. Content has been written in Autumn 2010, statements in the article are referenced to that time and to the testing on Samsung Galaxy S i9000 phone. |
Android Development
As we pointed out in this blog title, we just wanted to make an awesome Android phone application and we wanted to find out how much effort does Android OS really take for a development. Users don’t care about this and web press don’t care much as long Apps are great and working and all the hard work by developers isn’t mentioned a lot, except at dev blogs.
How Android is working
Android market is the main source from which users download mobile Apps to their phones. First thing that we noticed is that Google, the grandmaster of web search engines, doesn’t even have search feature on Android Market website so you can not find mobile App that you are looking for. By statistics there is only a small amount of payable Apps and their price is around a dollar ($1) and most of the applications on the Market are free.
Web view of Android market v iPhone App store
Google definitely plays whole different game on mobile space. Knock-outing all other players with free OS for all handset Vendors it gained mass and popularity and is trying to secure future dominance over mobile search and advertisement, Apps. This isn’t such a bad strategy after all if you think that predictions for Mobile market are $17.5 billion $ by 2012.
Developers are the most collateral damage inside Android value system. They are trying to make good Apps and it is a shame that Google don’t care to promote developers properly with better Market and it looks like Google is the only one who gains profit out of this relationship. Is it also true that Google has been lucky, or to say it better, just on time with Android launch and become the only real competitor to iPhone, which is sold by only one vendor – Apple.
On the contrary, Android, that has open approach, allowed many different vendor carriers to get into smart phone market (HTC, SAMSUNG, …). Taking advantage of growing Apps market and advertising Android platform Google is collecting large statistic numbers for variety of marketing use. At the same time public relationship (mostly fans) has done a great job hiding the background of so called always beta Android platform.
Why Android is not very friendly for developers and can improve a lot in the future?
- No earnings for developers Developers have less chances to earn money on the market since the users expect to download FREE applications - good for users, bad for developers. In the long term is also bad for users because they will get lower quality products. Here are not counted enterprise solutions for real clients.
- Market is not organized Market is huge, tens of thousands of Apps, lots of daily uploads with no quality control... Lots of free Apps are very poor and not very good and this means that is harder to find a quality product on Android market. Consider how can normal user find your application?
- Bad API consistency Java in theory is a good idea, you should learn language, coded once and then run the code on different platforms and Android runs Java applications. Android platform have different features, like file structure, graphical interface, accessing hardware features, etc. So programmers make APIs and libraries to simplify development, to avoid writing code for same functionality over and over again. Android API has like every other API issues with backward compatibility, extensibility, maintainability... and backward compatibility is poor, applications written for 2.1 are not guaranteed to work on newer phones (2.2). Code does not necessarily compile for latest version because Google has renamed a method or a constant (e.g. frequently used FILL_PARENT renamed to MATCH_PARENT).
- Other Android disadvantages we experienced:
- Not so easy customizable (you can change colour of a button but cannot change the transition animation between activities)
- Emulator is slow, no camera support
- Sometimes during development testing Phone Galaxy S freezed and the only way to wake up the phone was to take battery out.
- Not as friendly to use as iPhone, e.g. you have to deal with USB drivers. Not as fast as iPhone.
API bugs API documentation is sometimes inaccurate and outdated, for example saying "this method will always return a list with at least one element" but what it does is exactly the opposite - returning null. As Android has many documentation issues phone manufacturers interpret documentation in their own way, not following the documentation strictly (e.g. random phone resolutions). Manufacturers improvize to gain some hardware features, like accessing the secondary camera or secondary SD card (e.g. originally /sdcard is for external storage but on Samsung Galaxy S /sdcard is used for internal, /sdcard/sd for external). Developers always have to look for work-arounds, trying to write some logic code at first that it does not work, trying the other way and it does not work either, trying for the third way when it finally works. Dealing with that kind of work-arounds takes time and nerves. In long-term this issues may result in non-consistent APIs, different for each phone model, as it was back in J2ME days.
Conclusion: Android solutions are short-terms for developer, patch it and "works now" and API design is really a large downside for a mass consumer product as it is Android.
Why Android is also not perfect for final users?
- Bound to Google Android phone user needs GMail account to download an application from the market. Once a user logs in with GMail account and downloads at least one application it can no longer remove the account from the phone without resetting the phone to the factory defaults. With default settings open Google has chance to always track an account for controlling downloads and tracking IP and GPS location of the phone (default settings on Samsung Galaxy S phone).
- Hacks, viruses, security, privacy issue on Android phones can be exploited easily with numerous hacks to unlock the phone (e.g. by uploading custom firmware ROM) or bypass security restrictions (root access hacks). Even with the brand new phone you can type *#*#...# sort of secret codes to access the hidden or debugging features on Android phone. For access to for hidden GPS settings type: *#*#1472365#*#* on Samsung Galaxy S phone).
Pre-installed system applications can enable Wi-Fi, Bluetooth, camera, browse contacts without user ever knowing or agreeing. In our case we get unwanted silent imports of GMail messages and contacts just by logging with GMail account on the Android market. - Beta quality products for users Nowadays Mobile phone market is already huge and touch screens are very popular and competitors are fighting for every percent on the market. To be a step before or to catch the competitors Google needs to provide Android products fast. Quick releases mean less testing and buggy features, resulting in fair-quality beta products. Samsung Galaxy S is at the time of writing the hottest Android phone on the market and many are comparing as Android iPhone, but guess what: GPS does not even work correctly with the initial firmware. Sometimes touch screen freezes and you cannot turn off or reset the phone because "turn off" is triggered with a touch (there is always a way to take battery out and insert it again).
To emphasize this test with Galaxy S: Android software is currently the main problem, not hardware. Software could be a whole lot better, hardware is at it's optimum.
What are the conclusion sorted by the facts:
- Users expect free apps resulting less $ for developers
- Fairly compatible platform versions
- Android market is big with lot of toy apps and few very useful everyday applications
- Privacy issues: Google holds you and you can not escape
- Questionable security, easily exploited platform (hacks)
- Constant searching for work-arounds during development
- Phone manufacturers use API in its own interpretation
- Fair quality software, is it a bug or feature?
Final words
In the terms of software and UX we have to admit that iPhone is currently much better then Android, who is trying to catch up, resulting in quick decisions, bugs, and lower quality product. Android is improving and we can soon expect it will be a stable platform (1 year) and because is »open« platform compare to »closed« iPhone system has lot of potential to overcome iPhone. There is large amount of phone manufacturers that produce Android phones with free Android OS opposite to iPhone which is under Apple control. Very important fact is that number of Android developers are growing more rapidly than developers for iPhone and also on the market Android phones are selling faster then iPhone (USA example). Android is definitely a step forward compared to J2ME but now it looks that it is going to the same problematic direction (resolutions, different hardware, compatibility).
What do you think? Share your thoughts in the comments.


