Saturday, December 24, 2011

Eclipse Maven and Android romance

This is a story of three, Eclipse as the IDE, Maven as the build, and Android is our dear framework...

The hell with them all!

The first time I tried to build an Android project, I've used the ADT build, which was flawed, but it did the work, later on most bugs were fixed, but the most annoying matter remained, Why the hell to use the Eclipse old build process, if I love the Maven repository concept, and the fact that it saves lots of build path configuration time, and very straight forward?

So I started digging for an Android-Maven plugin, as it was there was one, it called maven-android-plugin,
I've tried it out, and the results were terrible, importing other Maven 'apklibs' together with 'jar' artifacts from the Maven repository ended up in a tragedy, the project didn't compile. So I have learned the build process of Android, and implemented a workaround in the pom.xml to build the project. The real challenge was to enable Eclipse to also build the project using the ADT, so F11 would instantly debug the application, and sign it with Eclipse debug key.

This took days, but finally I got it working... I was so happy, I think it was ADT 13 that everything worked then... and then Google released their ADT 14, which for some reason messed everything up, again, not compiling and not deploying, I had to rewrite my pom only to realized ADT 14 had a bug, and ADT 15 should fix, which it did not...

Frustrated as I was, as soon as ADT 16 came out, I've installed it, and gave it another go, after two long hours the project compiled, with all it dependencies, Jars, and Apklibs, I was thrilled, I could not wait to try it out... but here is the funny part:

When launching the application from Eclipse in debug mode, the ADT (starting from version 8) addes the debuggable="true" to the manifest, by default, and the apk is signed with Eclipse default debug key, you would not believe how this feature saves your time... doing this with maven has a few minutes overhead, for every time you want to switch configuration... hell, I was willing to accept this, and then I realized, that for every deploy I want to have, an install must be made... do you have any idea how long it takes to build a serious apk with a single 'apklib' dependency, and other pure java dependencies? more then 2 min...

So every time I would want to deploy an app and test it, I would have to configure, and wait... what the hell, I don't have time for this BS, so I've left the pom.xml file in the project root folder and manipulated the '.classpath' file, and preserved two copies:

One to handle ADT 16 build process, and the other to build with android-maven-plugin.

I've kept the Maven build to build from my keystore, and sign the apk for publishing, so when I build using continues integration, I can publish the apk instantly...

The END.


No comments:

Post a Comment