1. Android users use apps differently
On the iPhone and iPad, everything is touch. You navigate from A to B and want to go back to A, you expect that there’s a “back button” on the screen. You want to take an action, you expect there’s an on-screen thing to press to do it.
Android devices are not the same. Android devices have buttons, and people expect them to work. When I first wrote Beer in Japan for Android…

…my test users immediately raised the issue that the back button didn’t work. Replies of “just press the back button on screen, damn you!” were met with “it’s unintuitive” and “that’s so iPhone!”
When I installed Opera Mini on my $99 Android tablet, it confused me – because after entering a URL, there was no GO button on-screen. I thought it was a bug! But no, Opera Mini requires you to use the MENU key to do certain functions.
Android and iPhone apps are different. I suspect a lot of people who want to write web-apps once and roll them out across multiple platforms are going to get a nasty surprise.
2. You can’t trust the emulator
When I got my hands on my Android tablet, I was shocked to discover two things. Firstly, my apps which were supposed to “scale up” automatically to tablet size didn’t (despite me having the correct flags in the manifest set). Secondly, my apps which were detecting an internet connection were not working properly – they were reporting that there was no internet even when there was a working WIFI connection. Apologies to anyone who bought FailClock, lolcats!, or Engrish Crock – the issue is fixed now so please update!
I consistently get inconsistent behaviour when it comes to screen sizes and rotation on the emulator; the network on/off toggle is 3G only – it doesn’t simulate having a WIFI only connection; launching the mail app cannot be done on the emulator; market links cause apps to crash;…
Fact is, you need a device. And even if you have one, you better test across different screen sizes and devices. For any Android developer, a device like this is essential. It’s worth its weight in gold.
3. Android users buy apps differently, and the Android Market situation is a mess
On an iPhone, you buy an app and it’s bought (unless it’s a $1000 app that your kid buys by accident!)
On Android, users can refund apps within 24 hours. That really keeps you on your toes, because if you see an app being refunded often, it means it’s either buggy or it’s crap. In my case, some one of my apps were being refunded due to the WIFI issue – it took until I bought an Android tablet to know that.
In addition to refunds, there are Android Market issues. On Android Market, you can only price your app in one currency, and it’s determined by the country in the seller’s profile. If you are based in the UK, your apps will be priced in UKP, and that’s what buyers in the USA will see – a UKP price. That refund thing I mentioned earlier? Not uncommon for a US purchaser to see an app at 69p, buy it, then realise it’s 69p and not 69c and refund the app. And if you’re selling from outside the US, get prepared to see “Payment declined” quite frequently also – not all US credit cards allow purchases in other currencies.
It’s not all rosy for US sellers either – many UK buyers get slapped with an unexpected bank charge for dollar transactions if they use debit cards. Ouch.
And the issues don’t end there. People in countries such as Ireland and Belgium can’t even buy applications. Maybe Google worries that the Irish and Belgians will always be drunk on Guinness and Leffe? Want to sell to those users? (I love drunk users!) You have to deal with alternative market sites such as SlideMe.org – and those sites insist you fill out US tax forms if you are an overseas resident. I tried reasoning with SlideMe – neither Google nor Apple requires tax forms, and they don’t withhold tax either – but the replies I got back just reinforced the impression that SlideMe is run by a teenage kid out of his bedroom.
The issues don’t end there either. Some devices – such as the one I bought and those from Archos – don’t have Android Market at all, not even for free apps.
Oh, and the issues don’t end there either. How do you direct link to an app you’ve written for Android? Unlike Apple, there are no nice http links for Android apps. market:// links only work on devices with Android Market (and they crash apps in the emulator!) The only solution I’ve found – codes like this one:
At least Google are fixing this issue.
Fact is, selling on Android ain’t easy.
There isn’t a day goes by when I’m not approached by another new alternative Android Market opening, often because a device maker is locked out of Google’s market. Google really needs to sort this out. It’s barely worth my time uploading for Android Market as it is without every device maker having their own market. Am I really going to spend my time uploading to Archos market when sales are likely to be less than pitiful?
If any device maker does want my apps on their market, at least send me a test device. I need to make sure my apps work!
4. You have to go native, at least partially
My first thought for transferring my apps to Android was to use PhoneGap. That should work, right? Hmm, the PhoneGap “instructions” page wasn’t encouraging – as well as looking horrendous to set up, too many people said that it just didn’t work as it should. Unanswered from Sept 2009:
Having the same issues as Tavis and Ed Turner … Also, still wondering about all the missing images on this page. Tried with the standard download and github build, no dice. Keep in mind I am able to create and run standard projects with the same eclipse install, AVD and all, but if I wanted to write Java, I won’t be here.
It seems like I’m missing a step in the project setup.
Anyone?
My next thought was to use Titanium. What a mistake-a-to-make-a. From installation, Titanium was bugged – it didn’t allow apps to be run in the Android emulator. Once I hacked that to work by searching Google, I found that 80% of the time my builds were not being installed in the emulator – I had to delete and rebuild the emulator all the time.
When I did get something running, I discovered the iPhone tricks I used to prevent page scrolling (essential for displaying maps on the Beer in Japan application), detecting internet connection (for FailClock and lolcats!), etc simply didn’t work. JQtouch had blinking issues when animating. Items rendered differently.
Cross platform web apps with Titanium and PhoneGap? I wish! In the end, it was simpler to build my own webview wrapper and hook my own calls into it from Java. At least then when I had an issue – such as with rotation – I could solve it easily by looking in Google’s official documentation, rather than trying to hunt around for hacks in PhoneGap and Titanium due to lack of documentation.
(As an aside, I’ve also working on moving away from PhoneGap for my iPhone apps – web apps are a good idea, but performance with JQtouch and JQuery on an iPhone 3G isn’t optimal.)
5. Apps uploads are immediate in Market
With Apple, app submissions take around a week. Once an app gets approved, it then appears across the world over the next 24 hours. You get used to that as an iPhone developer. I’ve got in the habit of uploading my apps and the next day going back and spending time changing the descriptions later.
You can’t do that with Android. As soon as you upload an app, it’s there instantly. Immediately. Everywhere. Not only that, it’s sucked into a million and one websites that attempt to provide a web based front end to the Android Market (since Google doesn’t). You better make sure your words are perfect.
(Of course the fact that you can update apps instantly has advantages, especially when you discover bugs – sometimes I hate the week long Apple wait.)
A final note…
This post isn’t anti-Android and I’m not some Apple lover – heck, I’ve had enough insane rejections and review issues to make me think twice about Apple. This post is simply the lessons I learnt as an iPhone / iPod Touch / WebApp developer moving to Android – a post that I hope will be useful for others Apple developers thinking of writing for Android.
I plan to write a similar post for iPad development in the near future.

lolcats!

FailClock

Beer in Japan

Beer in Korea

World Cup Factoids & History
My iPhone apps include: FailClock, Beer in Japan, Flickr Clock Photoframe, and World Cup Factoids & History.
My iPad apps include: Diet Cakes, Cat Fun and Dog Fun, and Start The Day With Power.











Excellent post, really helpful.
I had couple of rejections from Apple lately and frustration was leading me to idea of developing for Android rather. However this post helped me with a taste of reality check; it looks like Apple is still a better place for development thanks to no problems with payments and localizations.
Now they list also $134 8″ Android tablet making me go crazy in trying to decide. Any advice which way to go?
Well, I have not used the $134 tablet. However, from what I know of it, it’s a little faster than the $100 tablet but I think it is missing the BACK and MENU buttons, which are definitely necessary (Opera Mini cannot work without the menu button). There are some videos on You Tube reviewing the $134 tablet.