Tools of choice when crafting Android apps

In this ever changing development world I wanted to take a little snapshot of which ones are my tools of choice when developing Android apps, both at work and at home.

Design and prototyping

Photoshop for design, all along. Though lately I've been experimenting by trying not to use it, and go with Pixelmator instead. I haven't died in the process.

For prototyping and vectorial design I'm loving Sketch. It's not very expensive and IMHO it's very powerful for mobile thingies.

IDE

I hate Eclipse. I didn't liked it very much back then, and I really hate it now. The first thing I do when I got to work in a legacy project is creating a new one and importing all the classes by hand.

I switched back then to IntelliJ, and when Android Studio was unveiled it was like a blessing. It doesn't matter the little problems here and there we all developers had since it's birth, it's all worth it.

For logcat I use the very nice pidcat util from Jake Wharton, because it makes my life easier - the one embedded in Android Studio is too bloated and I prefer to have it in another screen.

Build System

I've used ant and maven in the past for my Android builds.

Nowadays the most clever thing is go with Gradle. The thing is, I'm enjoying the ride so far. I've never used Groovy for anything, but it's being quite fun fiddling with it.

Favorite libraries

I use a lot of opensource solutions, though there are a few that are a constant in all my latest stuff.

Version control

I use GitHub for everything. And I've come to love using its command line interface, it's just a few commands the ones you have to master to be effective. For merging I use the wonderful Kaleidoscope, linked to my git mergetool command.

For being more eye candy in the terminal I use iTerm2, and as sh I really love the greate Oh my Zsh with the theme Agnoster + Solarized Dark, using a modified version of Source Code Pro.

Scripting

For scripting purposes I'm using Ruby lately. I have used it for "bigger" things in the past, but for quick automation I think it's the best choice. I manage it through rvm.

For editing Ruby files I use Sublime Text 3 mainly, though RubyMine is awesome when you are doing more complex things with it.

I have opensourced my Sublime Text 3 config, in case anyone might be interested.

Running the app

I don't really like to work with a simulator/emulator, I prefer using real devices. I have used a lot the x86 emulators shipped with Android, also Genymotion lately, and even Bluestacks. But I prefer to root and install something stock-like to my "ex-devices" (Galaxy Nexus now).

And, by using CM11 in it, I can pretty much stream all that's happening in the screen via AirPlay with Mirror to my other devices, usually my MBP running AirServer so streaming a live feed for client demos is a delight.

Final words

Of course, this is a VERY subjective list - if you don't agree it's fine! But IMHO this combo of applications provides a great productivity boost.