I am a strong believer in your tool feeling good to you; it is the environment you create in. The better it feels, the faster and more cohesively you will work (within reason).
That being said, I'm comparing Eclipse+ADT to IntelliJ. I have no opinions on alternative home-brew solutions that are a combination of editors and command line.
For Android development, you'll want the following things:
- Strong Java editor support - Strong Android UI support - Strong debugger support - Strong deployment/emulator integration - Support for whatever Android version you are targetting.
The two IDEs in all those areas are damn near similar, except...
ADT 12 just added a slew of nice, Android-specific context-sensitive content assists that are really damn nice.
In addition, ADT 12 jumped the visual layout designer forward in a big way with accurate component rendering in preview as well as support for custom components[1].
I think something worth considering is that Android support is a feature, among 100 other, that the core IntelliJ team develops, support and extends.
ADT is the official, Google-driven effort to develop and expand their Android tooling on the Eclipse platform. The ADT team isn't distracted by things like autocomplete support, classpath scanning, project formats, etc... all they do is develop Android tooling directly ontop of Eclipse.
I would expect that the ADT tools continue to be more robust and outpace competitor implementations.
I would also point out that the ADT team has some seriously fantastic developers on it; if you are the type to enjoy high level "new feature" overviews of IDEs, check out Tor Norbye and Xavier Ducrohet's presentation at Google I/O 2011 showing off a lot of the new features in ADT 12[2].
I realize up to now it has sounded like I'm an Eclipse fan, but I am just a "tools to get things done" fan.
I tried vim, but the command-line builds were horribly slow, and almost all documentation and tutorials I found expected me to be using Eclipse.
I really would recommend sticking with it for a while and then moving on to vim once you've got some experience in the process.
Also, try using eclipse on very large projects -- it gets very slow. Sometimes I'm not sure if eclipse is hung, or if it's still stuck compiling something or fetching something in maven.
do all that the docs tell you that the ide is doing ioutside of it and compile.
i did the test. eclipse version had 30 extra kb i could never explain.
- Write code in VIM
- Build everything on Eclipse.
Basically keep eclipse open only to build, and deploy to the smartphone. Everything else, do it in vim.
Every one of these is a valuable optimization for some workflow somewhere. All of them reduce the compile/test cycle by seconds or minutes, speeding development. NONE of them are done by any IDE I'm aware of.
Seriously: write code to help you write code. If you aren't doing this, you probably aren't writing good code. And if you gave that answer in an interview, I for one wouldn't hire you.
That's why I'm always wondering why anyone would so much want to waste time with typing Java on VIM (even though I DO use Vim for other programming tasks) instead of just using an IDE specifically customized to make such development faster and easier.
I use Maven for all my Android builds.
- adb clean (because chasing syntax errors that don't exist is a headache)
- run my (shockingly limited) test suite
- copy the .apk to a shared Dropbox directory that I use to let a few people help me test nightly builds
Without the tests the full build takes a few seconds (on MBP from March 2011).
Seriously, give IntelliJ IDEA a try. Personally I think it's a lot nicer and snappier than Eclipse. It has a free edition. You might still decide that you don't like it but I think it's definitely worth a try. Also, the last time I checked (which was years ago, admittedly) it worked with Android perfectly.
i read the "other ide" page on androids docs and understood all the build process.
if i used eclipse, all i would know is how to hunt down menus filled under nonsense names...
painfully typed on a mobile
I hated Vim.. until I got 12GB of RAM. Now it's just another tool.
Bonus points: Install Vrapper (http://vrapper.sourceforge.net/home/) and get Vim keybindings. I also change the theme to get a black background and Inconsolata font.
ctrl+] - select to the end of line
ctrl+[ - select to beginning of line
ctrl+d - cut current line
ctrl+k - duplicate current line below
ctrl+; - jump to beginning of line
ctrl+' - jump to end of line
ctrl+tab - switch perspective between debug and editor [1]
ctrl+i - focus on console [2]
ctrl+f - toggle find/replace bar
About the last shortcut; I highly recommend you get a modern find feature and not the window popup eclipse ships with - http://sandipchitale.blogspot.com/2011/04/eclipse-findreplac... -[1] For me this is pydev, for you could be the Android SDK ide.
[2] I have a pydev python repl running in eclipse for simple checks. Using ctrl+i to focus on this console is really nice.
Bonus if you customize your theme. Mine is a white text on black.
Here's my setup: Emacs, DDMS + JSwat, and ant to build.
I have emacs and a terminal open at all times. To build I switch over to the terminal and use ant. Sometimes I'll write a shell script to build+install+run on a phone.
For directory navigation: nav - http://code.google.com/p/emacs-nav/
For code completion: http://www.emacswiki.org/emacs/JavaCompletion
Building on the command line is simple. Type ant release or ant debug. Or ant install to build + install on phone.
My setup is essentially Emacs, DDMS and cscope/find/grep/etc.
I always find Eclipse to be too heavy. I don't do much actual UI coding though (I'm a platform guy), or I might consider it. The ADT UI tools seem to be very powerful and convenient.
Eclipse also sucks for Flash development, which is why I prefer FlashDevelop on Windows. It's just so much faster, and makes coding fun. Running FlashDevelop inside a VM is preferred over running FlashBuilder/Eclipse natively on the Mac.
> I have never seen a box that used vi in lieu of vim
I'm going to guess that you mostly use Linux boxes? The BSDs use nvi, which works and act like the old Berkeley CSRG vi. If you look at more esoteric systems like Solaris, AIX, etc. , you're likely to find varying versions of vi (disclaimer: I do not know the situation in Solaris or AIX. They are simply examples of esoteric systems—I'd love to be corrected if you do know).
I would not, however, recommend using anything but vim for development. nvi has its place a small text editor to get your config files in place, and vim has its place as a large programmer's text editor.
On some systems vi is aliased to vim, so you would appear to have both, but you really just have vi. Even on systems where full vim is not installed, the "vi" installed is cut down vim.
I worked in Centos for awhile and vi was aliased to vim, but that might have been a local practice.
Also, I never type that extra "m" so why should I say it?
I used to use Eclipse before, but found the most frustrating thing about Eclipse is how often you'll encounter plug-in conflicts. (One plug-in doesn't want to work with another plug-in, but you just happen to want use both tools)
After using IntelliJ for a while, there i no going back. It's more responsive all round.
I really don't have any issues with Eclipse, as long as I'm using a fast PC with a lot of RAM (SSD helps as well).