Most of the people who have done server side Java development are approaching Android the same way. Android is Java, right? So where is my dependency injection? How can I configure things with annotations? How can I unit test? How can I just include my usual 400 libraries or my favorite JVM language with giant dependencies? Turns out programming for an embedded device is different. You do not use dependency injection and program against interfaces because performance and lazy loading are everything. You test most parts in context (using Instrumentation) and yes, configuration is done in XML(thankfully, resources at least get translated into classes). Also, library size and speed matter (so most JVM languages like Scala, even after the proguard treatment, are unfortunately out of question). And finally, you will feel the pain of not having (less noisy) closures in java more than in server side development, thanks to Android’s callback-centric design.
That all being said, there are things you can do to improve your development environment, so here is a list of tools that I found particularly useful.