Android Studio vs. Eclipse 1 : 0


One month has passed since Google released Android Studio at the Google I/0 2013 Conference. After the initial fuss has settled, it’s time to make some remarks about this new IDE for Android development.

After Google announced its own IDE for Android development based on the IntelliJ platform (let’s face it, as the name suggests, it’s the most intelligent IDE for Java programmers), I was quite optimistic and happy about this exciting news. So I made some coffee, opened a fresh box of Domaćica cookies and downloaded the IDE from their official website.

Android Studio

I’ve never been a big fan of Eclipse for different reasons: a) it’s ugly, b) it’s buggy, c) it makes you start believing in heavenly creatures and divine wisdom of the Gods of Java & Android (it is a known fact that gods of programming exist, and you have to worship them in the form of yelling, cursing and drinking a lot of coffee). It is OK when you are developing smaller applications, but when your application has 10 projects and 10 external libraries, that’s when the fun begins – refresh project, clean project, restart Eclipse, and then all over again. I absolutely hate Graphical Layout when I’m developing UI elements, because it never works properly – at most I can only look at half of the screen after reopening it for two, three times… Also, we experienced a lot of problems with the newest version of Eclipse (it was crashing at least once a day).

The installation process for Android Studio went perfectly, and after starting the IDE, I was immediately amazed when I saw the brand new Studio – it was ugly and not sexy at all (so it was just like Eclipse). But guess what – you can change the default theme to a totally sexy, dark theme named Darcula (genius name) without hacks and workarounds. It uses really nice colors, and I absolutely love the default font (Lucida Grande), which looks fresh and cool.

Sexy theme

Fig 1. Awesome Darcula theme

My first project

Then it was time to import my first project – Streamoplayer, an application for streaming media files from the Internet or SD card developed in Eclipse. This is when problems started – Google said that Apache ant is old technology and they replaced it with Gradle in Android Studio. I won’t go into much detail about Gradle (here you can find more information on Gradle), just point out that first you have to create Gradle files in your project.

Of course, this is not as simple as it looks, because first you have to upgrade your Eclipse to the newest version (this could be the subject of a new blog post, because it is NOT as easy as it seems).

After I successfully upgraded my Eclipse and generated Gradle files, I said bye-bye to Eclipse and deleted it from my filesystem. Then it was time for the second miracle to happen – importing the project to Android Studio. Most of you have some experience with importing projects from different IDEs and know that it never goes smoothly. But, this is Android Studio, and it’s God’s favorite IDE for Android development – importing a project is as easy as just clicking the button Import. Puff, and it’s there.

After playing with AS for some time, I’ve created my list of 5 totally cool and sexy features:

Sexy list

UI development – changes in UI files (like layouts) are dynamically updated in Preview. This is quite an improvement in comparison with Eclipse, because Graphical Layout never works fine for me. Never.

Android Studio

Fig 2. Dynamically updated Preview

Layout previewing – layouts can be previewed on a bunch of different screen resolutions (from 2.3 inch to 7 or 10 inch tablets) in real time. At Infinum, we are always developing applications for a gazillion different Android devices, and this could really speed up our development process

Android Studio

Fig 3. Devices… devices everywhere

New completion dialog – which shows icons, translation files, etc. This is quite handy. For example, if you are developing an application in different languages, you can see all translations of the selected word in one place

Out of the box integration with version control systems AS has by default a smart version control plugin (for git, SVN, GitHub and Mercurial), which controls versioning of your files and their updating with branches. I love Linux and Terminal, but sometimes it would be easier and quicker just to use a plugin instead of typing commands into Terminal

Deep code analysis if you point to a line, it gives you detailed explanation of an exception based on the annotation added. And you can also know which constants are allowed for which API. Believe me, you will be amazed when you see how much this affects your debugging process and time wasted on looking for an error, like a bad constant.

But, I have to say that AS has a lot of bugs, which is not surprising, as it is still a work in progress. Some features don’t work sometimes (or don’t work at all), like replacing a R.string.something key with its actual value.

Users have also reported errors in workspace after creating a new project while they were not connected to the Internet. I really hope that this is a bug, because I find the idea of being connected to the Internet all the time while developing an app totally stupid and unnecessary.

Final thoughts

AS is still not a polished product that I would recommend to all of the Android developer community, but I’m quite optimistic that most of the bugs will be fixed in the official and stable version (current version is 0.1.3, so it’s still an early access preview). The guys at Google really did a good job. I will keep my eye on AS and wait for the official version, and pray to Gods of Java & Android ™ that the day when I won’t be needing Eclipse anymore is coming.

The future looks quite promising for AS, especially as Google is directly supporting the development efforts, and we all know how much Google cares about Android. In mine and God’s opinion (He is also an Android developer), Eclipse will be defeated by AS.

Resistance is futile.

If you’ve enjoyed this article, read my latest piece about the future of Android development.