Fuck the Android Build Process
bonobolabs.com
bonobolabs.com
I guess after working on BlackBerry apps, I'm spoiled by Android's tools. (to build a BB app of even moderate complexity and deploy it to a device, you have to contact a RIM server. Every. single. time. That and the Eclipse plugin was straight up broken for a long time)
1. You can select a custom debug key in eclipse and have multiple devs sign with the same debug key.
2. You should be able to instantiate the MapView in the code at runtime (don't have a dev set up to try this on right now but check out MapView(android.content.Context context, java.lang.String apiKey)). Just provide the API key based off a debug/release flag set in your code.
I was also using a debug/release flag previously but kept forgetting to change it when I sent the release build out for testing.
For Eclipse you can set the debug key here: Window > Preferences > Android > Build > Custom debug keystore. That's for the normal Eclipse/android build process.
Comes in handy when developing on multiple machines as you can't update an app that was signed with a different debug key (must uninstall first).
As long as you're learning about java build tools, take a look at the android maven plugin. It can be useful once you outgrow the confines of the default android build process.
Ant is the backstop to the build the IDE makes automatically, in cases, like this one, where there isn't a parameter you can set in the build options dialog.
You might not like ant, or having to learn it. But it's not an unusual choice for Java builds. There are many cases in more-complex Android project builds where ant is necessary.
Comparing to Rake, I'm currently trying to create a rake task to create a custom package (non-gem). I don't even get a project name for free. I've got to ask the user to pass in the name (or a Gemspec object perhaps).
Is the objection to the mass of XML? Or to Maven itself? I can understand the former, but I really think Maven is a well engineered system...
Just in my experience every software project I have been on with Java that used maven had an immense build process. I am not kidding one system I worked on the tests alone within it took about 45 minutes per day just to get started. Maybe it is too powerful, and yes part of that is the xml/enterprise feel of Java and guilty by association.
But I agree the Eclipse / Android SDK should have a better way to support the debug/release build.
Then again, I have yet to submit my app to the App Store, or run it on a physical device. Getting started with iOS is a LOT less trouble compared to starting with Android development. I can't even begin to compare the two when started out anew.
But after that, for Android app, what you all need is to export the APK file from Eclipse (sign with a keystore) for upload or copy the device; for iOS app, you have much things to do ..
Granted, given all the complex permutations and needs the iOS development team and XCode and Apple App Store has to support, there's probably a lot of method to the madness, a lot of "necessary" complexity. The problem is that if you zoom out a bit, much of the complexity one originally thinks is necessary, is not actually necessary, if you change one or more of your premises.
I'd have killed for a simple macro syntax to use within my config files. Hell, at one point I was actually (stupidly, one of the more futile tasks I've ever tried) editting the MSBUILD files by hand.
This means I have to manually edit connection strings, debug settings and more that vary between our local ASP.NET servers, our intranet dev server, our local emulator environment and then debug/prod Azure instances.
If I'm mistaken I would be ecstatic to be corrected. Hell, I'd have paid money out of pocket for a macro/conditional solution for this problem when I was working on this project. Also, if it's just too off-topic, please accept my sincere apologies. I just found it kinda nitpicky to pick on Android for this, although I can sympathize with the author if they're accustomed to more "open" languages and frameworks that are more tool-friendly.