Top Stories

image
Global Military Ranks for Android is here! Read the Full Story
image
Why the Android graphics lag behind Read the Full Story
image
An Android Developer's Diary Read the Full Story

News

I have spent quite a few hours with Eclipse and the Android SDK. App development and CyanogenMOD coding has given me a decent amount of experience and I suddenly felt like sharing my thoughts. What's good, what could be better and how does it stack up against the competition? Any aspiring developer will hopefully put much consideriation into figuring out what platform to focus on and maybe this article can add to that thought process. 

Ive done quite a bit of software development over the years but in terms of mobile operating systems, Ive worked with Windows Mobile (*shudders*) and some qt stuff during my brief Maemo period. Unfortunately, I have not given iOS a go yet even though Objective-C looks interesting, although Im not sure if I mean that in a good way or not.

When developing for Android, Java is the weapon of choice. All you need is Eclipse with the ADT plug-in installed along with the free Android SDK and you're all set. I love how easy it is to get started. I still remember how I was pulling my eyes out trying to follow the documentation Nokia so generously provided. The documentation available at http://developer.android.com is nicely laid out and simple to read and understand and includes everything you need to get underway. If you've ever worked with Java or any object oriented programming language before, I dont think you will have the slightest of issues with Android development.

Thats not to say programming is necessarily a breeze. Working with intents and broadcast receivers can be intimidating at first, but once you get the hang of it I think you will agree that its actually a nice way of doing things. 

When I was writing SMS Forwarder I ran into plenty of challenges, and I felt that some of them highlight areas of possible future improvement. Broadcast receivers are awesome but its all the more frustrating when certain events dont support broadcasts at all. Incoming text messages can be handled by the android.provider.Telephony.SMS_RECEIVED receiver, but then I learned that there are no broadcasts for outgoing text messages, so I had to end up implementing a more complicated and less stable system for intercepting those. 

Furthermore, working with the emulator is not exactly enjoyable. Its slow. Really slow. With iOS, the emulator (or simulator as Apple call it) is a completely different experience as the hardware is emulated directly, resulting in a vastly superior performance. That said though, the emulator in Android 4.0 is a lot better, and the issue goes away completely when you have your own devices to test on. Something that in turn is a lot easier to do when developing for Android compared to the iPhone, as getting your iPhone ready for development is supposedly quite the process from what I've read. 

My biggest gripe with Android development is probably the issue of graphical user interface design. While there is a GUI-designer in the Android SDK, using it is quite frankly a nightmare in my experience and Ive always ended up just coding the XML layout files directly instead. While I have no knowledge how this is handled in the Windows Phone world, I know for sure that Xcode does this remarkably well for iOS. It is frustrating having to fight to fiercly with the interface to get something pretty up and running. I find a lot of the default controls are rather ugly, so I end up creating custom ones. I see this being the case for a lot of developers too considering how wide spread the use of custom controls such as buttons and lists seem to be. This also results in a lack of consistency between apps when it comes to the graphical interface. On the iPhone and Windows Phone 7 you clearly see similarities between the different apps and at least to me it looks a lot more appealing. 

When developing for Android you also need to take into considering how fast the platform is evolving. New versions come out from left and right introducing new changes, improvements and API's. This is all nice and well, but thanks HTC and the rest who decide to heavily customize the flavour of Android they ship with their phones, it takes ages before new versions of Android get pushed out. For the app developers, this means that if you want your app to have widespread appeal, you will need to target older versions. The result can be some frustrating moments when you have to use deprecated functions and API's, etc.

To be honest, I have played with the thought of giving iOS development a go. The SDK looks good and I suspect working with Xcode can be a pleasure, even though I generally like Eclipse. That said, I consider the fact that Android development is done (for the most part) in Java. I understand that working with Objective-C requires you to basically forget everything about how you usually code and just sit down and study the documentation for Objective-C from scratch and ignore any thoughts about how you generally do things when programming. We shall see if I ever bring myself to try it out, considering you cant even get the SDK without registering as an Apple developer, and subsequently paying those annual $99. 

So to conclude, Android development is fun and easy to get started with. I havent said much about uploading and managing apps on the Android market but to be honest, I cant think of any way it could be done better than it is. Its super easy and you get tons of information about users, feedback, error reports, and so forth. 

However, not all is perfect though. GUI design can be a big challenge, Eclipse isnt the most stable software in the world, and Android's rapid evolution means you have to work hard to stay up to date on how things are done. So keep that in mind when reading documentation and make sure its valid for the version of Android you are targeting. 

If you considering giving Android development a try, just head on over to developer.android.com to get everything you need. And if you need any help or have any questions, the forums or comment system here could be worth it. 

Please do share your experiences with Android or any other mobile platform!

blog comments powered by Disqus