Thoughts on Android, as a Developer

So I haven’t been writing a lot of mobile development here, as I have generally tried to keep my personal opinions and work-related interests atleast slightly separated, I want to make a few comments on Android, after working with it as a developer for a few days. There will probably be atleast a few technical bits in here…if you’re bored, well, deal.

To start with, Android is a bit…over-engineered. It’s a problem I’ve seen a lot of in the past, whenever Java developers would try to get into J2ME for example. They take their academic lessons on proper system design and object object oriented programming and then go on to large, memory intensive, and overly complex mobile applications. And this is my first impression of Android. It’s large, and overly complex. The class listings are huge, and the steps to get things done, while nice in design theory, are numerous.


In Android, everything is broken up in to Activities. Not each application, each SCREEN. The running assumption is so that entire screens worth of code and data can be unloaded as necessary. It sounds good from a code standpoint, cleaner code and all. But it means the overall application size grows…the codebase size grows…the build times grow…etc. Maybe this is just my personal preferences shining through, but for mobile I prefer small tight codebases. I’ll just assume this comes from my background in games.

There are a lot of interfaces to implement, and a lot of asynchronous calls to wait for. The screen (err, Activity) switching design means you can’t just say hey now I’m drawing this, you have to request for the system to jump to another activity. There are these great XML-based UI layouts, which are completely useless if you also want to target any other platform.

In fact, I think my biggest concern with Android’s design is that it’s different enough, that porting to/from it, becomes more difficult. Which means either there are great costs involved, or more likely people just don’t use any of the usefulness of Android, and instead it gets used as a simple shell with everyone using their own custom APIs and libraries. And this leads to every application acting and looking different, which then throws out the point of having this complex overly-designed API in the first place. It can’t even be entirely blamed on APIs, because in general software developers want their application to look like their applications on every platform, and want it to look the same.

So there it is, my initial thoughts on Android as a developers’ platform. There’s still some more playing around and learning to do, so my opinions may or may not change over time. It’s a bit too early to say obviously, so maybe I’ll reprise this in the future.

Any thoughts? Is this kind of thing interesting? Should I get into the real technicalities or just leave it kind of overview-ish? Does anyone care?