Sunday, 4 July 2010

Making Android development more enjoyable

Here's some things Google should look into:

0. Include android market in the emulator/test environment

That should be fast and easy to do.

1. Try finding some ways to speed up the compile/test cycle:

a) Avoid moving too much stuff arround
Currently every time an .apk file must be produced (compressed) on the developers machine, containing all the code and application resources. This apk that contains everything is then transferred to the phone or emu. It's then unpacked on the phone and the install procedure is run. It doesn't matter if you just changed one class file, the whole thing is moved around.

I understand that permissions are managed during the install process, but this could be solved in some other way like trusting the code for that app by default.

b) Make the test environment run in native code during the development process
I know that using an emulator was a nice and fast solution for you, but a lot of time and energy is lost on emulating ARM. Davlik runs on x86, and all other code also. Why don't we just make a jailed/chrooted native environment for testing available? I know that this is not a straightforward thing to implement on Windows, and there might be difficulties making this run on Mac OSX, but it's really worth it.

2. Improve the visual layout editor.

There's so many ways this could be improved, but making it faster/more intuitive is the general idea.

One quick suggestion: Try making it easier to jump to respective code implementations or have an option to generate event handlers etc. code if no code referencing that UI object is found.

Example of a great code editor/UI designer integration is Borland Delphi. Even really old versions have ease of use that Android developers could only dream of. Android API is more abstract and UIs have relative layouts, but most of the great concepts from Delphi still apply.

Item 1 b) could also create possibilities for the UI designer tool.


  1. On the packaged APK bit, since the apps are contained in the APK when installed on the device, I don't know how much they can speed that part up. Inside the APK, the code is stored in classes.dex, so that has to be rebuilt for one class change anyway.

    I agree on everything here, I'm just not sure how feasible that one is.

  2. Concerning "Make the test environment run in native code during the development"

    The whole platform is nearly 3-4 GB stuff. Means the make a freash system build you need ca. 1h compile time.
    You see only the sdk layer, but this is only a smal part of the Android OS. Via the sdk classes you use implicitly native system stuff, which is compiled for arm processor, i.e. the whole networking, power management and other things. Their is simply nothing like this for Windows OS or Mac OS.

    So you could suggest something like this, but this will never ever happens. Good luck ! Frank