I have couple of Android phones but I am just a regular user from now on (unless if something extraordinary happens). I have done handful of work with mobile platforms including Blackberry, iPhone and mostly Android. (You can check some of them are open source and some of them on the market). One thing I regret while developing on android is how much effort I put on the application and as a return I got almost nothing even though sometimes its a good app. When I am talking about “return” it is not suppose to be money. I am not doing mobile development for living, its just something that I have been doing 2 year as side project. Return is something like android markets’ ability to feature my app as new or even noteworthy. How people on google expecting for single developer to expose its app to users? Only thing you can do to just spamming your social circle and expect it to spread other people or publish your app through known brand. In short you got zero app discovery on android market. As I understand some indie game developers suffers from this too and also piracy. This is just small glimpse to problems you may get on android platform.
The main problem while developing android apps in relation to other platforms (ok mostly iOS) is the number of devices you have to support. People keep saying this but from perspective of a developer it may not mean too much. Lets say you have a dialog themed activity like above (or in a web world popup) that you have to show to the user without gaining all the screen space. User clicks on a button and your dialog pops up right above the button. You are literally dead, you have to find yourself a solution that even though screen size change, you have to give the effect that popup displays just above the button. This is not clear ? ok how about this one, you created activity to show user a photo and list of items below that. Great, create a simple layout put image view and place list view below the image view right simple ? No not at all. Now test that activity in a smaller screen size so small that user barely see the list view to scroll. You have to put those views into scroll view in order to play nice with the user screen right ? No not at all. Cause scrollview do not play nice with the list view, you have to be some kind of magician to put them together nicely. And cause you are not magician you end up writing your own view that mimics the behavior of the list view to not fuck things up.
Another things is android emulator, it is the worst of all. It is painfully hard to test things just on android emulator. Yes I am talking about both emulator performance and things you can test with it. And now you end up buying as many as devices to test things. And there is development process called “application development loop” (that I made up right now) which you end up doing “make changes”, “save it”, “run the application”, “wait for apk to transfer to device” and “test it”. Lets say you work for 4 hours a day you end up spending about half of the time for this loop. Ok this is not something specific to android but why not we have something like “on the fly” development for mobile platforms that you made the change and its instantly testable. Ok this doesn’t count for android, this is my view about mobile development. So in a short android emulator is ugly looking, painfully slow and kind of useless depending on the features of your app (gestures, camera). You have to buy real device to test.
Ok how about XML files ? Ok before going into xml thing I must say “I hate adding manifest reference when I create new activity every time”. Is it that hard to automate that process ? I can not remember development process without getting “Activity not found exception” and aha “I forgot to add manifest reference” moment. Xml is one of the core mechanism of the android development to built user interfaces but I can say it is really productivity killer. After a while defining view on the xml side and retrieving on the code side to do something with it seems like too much repetitive work.
So yeah even though I enjoy the open environment of the android platform I will not be doing android development from now on. Maybe later…