For a short while now, I am developing for the Android platform, which is a mobile phone operating system developed by Google. The language to use is Java, so at least I didn't have to learn an entirely different new language and I can use the tools I already know and love. I would like to tell you about my 'adventures' as I explore the world of Android
When I first started studying the Dev Guide I soon discovered that the recommended IDE for developing Android applications is Eclipse. Which was a bit disappointing because I don't like Eclipse that much. But fortunately the kind folks of Google left room for other IDE's to develop with. They explain that when you use another IDE you will have to use all kind of command line tools instead, which they provide. Those command line tools allow you to compile your code for Android, run your application in a phone emulator, connect a debugger to your emulator, view application logs and stuff like that. But what they didn't mention, is that if you use Intellij IDEA (which happens to be my favorite IDE) it also provides good support for Android! This makes the use of most provided command line tools superfluous.
Setting up an Android project using IntelliJ
First of all make sure you're using the right version of IntelliJ. If you want to develop using Android SDK version 1.5, you have to use IntelliJ version 8 or greater. For IntelliJ 7 only a very old version of the plugin available which just won't work with the latest Android SDK. And I expect that for future versions of the Android SDK, you will have to use IntelliJ 9 since the latest version of the Android plugin for IntelliJ already requires IntelliJ 9.
- Create all necessary files for your new project by executing the android command line tool which is explained on this page: http://developer.android.com/guide/developing/other-ide.html#CreatingAProject
- Create a new project using File > New project > Create Java project from existing sources. Base your new IntelliJ project on the source files you created earlier. Note: you might want to deselect the ".../yourProject/tests/src" folder when IntelliJ offers you to make include it as a source folder. Also make sure to select the Android facet which will be auto-detected by IntelliJ
- Open the Run/Debug configurations window (Alt + Shift + F10 > Edit configurations)
- Click the button and select "Android" from the top of the list.
- Give the configuration a name and select your main "Activity"
- That's it! You can now run the application using an emulator by clicking the or button
If all went well, the emulator started up, launched your application and looks like this:
Note that the first time you start the emulator, it takes a long time. But luckily, you can leave the emulator open and redeploy your application while it's still running. So the second time you deploy your application on the emulator will happen much quicker.
One final note, to see the emulator logs (for example to view exception stack traces) run the following command: adb logcat.
Using Maven 2 to build your project
It is possible you want to have a build script for your Android project. This is mainly useful for:
- compiling and deploying the application without using an IDE
- running unit tests
- continuous integration
If you now browse through your Android source files, you will notice that a few files are generated for an Ant build: build.xml, build.properties, default.properties and local.properties. If you like using Ant you can leave the files there and use them for your build. If you, like me, rather use Maven 2 do the following:
- Delete the above mentioned Ant related files from your project's source directory
- Create a Maven 2 build script (pom.xml) following the instructions on this page: http://code.google.com/p/masa/wiki/GettingStarted
- If you set up the Maven 2 build script correctly, you can build the project using mvn clean install or also deploy it in the emulator: mvn clean install -Dmasa.debug
One final note if you want to use a version control system like CVS, Subversion or Git (which is always a good idea). You should check in all your project's source files EXCEPT:
- the gen directory (this is automatically generated by the Android compiler)
- IntelliJ project files (iml, ipr and iws)
By now you hopefully also have a Maven 2 build set up for the project so you can now for example set up a build server (TeamCity, Cruise control, ...) using the Maven 2 build and your VCS repository.
To sum up
I explained how to start developing an Android application using IntelliJ, Maven 2 and version control. I currently am developing an application using the exact same setup and it's all working like a charm. While further developing my Android application I will probably encounter various challenges which I will soon tell you more about.
TO BE CONTINUED ...