Android’s developer guide has a section on Developing in other IDEs for those who don’t want to use Eclipse. However the documentation leaves out a few details and all of the examples use Eclipse with perhaps a token paragraph discussing the CLI. The rest of this post will assume that you have already installed the SDK and properly configured it (added the SDK to your path and installed the appropriate SDK components).
The first thing to do is to figure out which version of Android you want to target. Version 1.6 (aka – “Donut”) is a pretty good lowest-common-denominator. Using the Android tool we will figure out the ID for 1.6:
niki@redblacktree:~$ android list targets
Which will give you a list of all the targets available (this depends on which SDK components you have added). My output looks like this:
Available Android targets:
id: 1 or "android-3"
Name: Android 1.5
API level: 3
Skins: QVGA-L, QVGA-P, HVGA (default), HVGA-P, HVGA-L
id: 2 or "android-4"
Name: Android 1.6
API level: 4
Skins: WVGA854, QVGA, HVGA (default), WVGA800
id: 3 or "android-7"
Name: Android 2.1
API level: 7
Skins: WVGA854, WQVGA400, QVGA, HVGA (default), WVGA800, WQVGA432
The target ID for version 1.6 is 2. Knowing that, let’s set up an Android Virtual Device (AVD) for our emulator using the android tool, specifying the target with the –target option and giving it a name with the –name option. We will use the default hardware configuration:
niki@redblacktree:~$ android create avd --target 2 --name donut
Android 1.6 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD 'test' based on Android 1.6, with the following hardware config:
Finally, let’s setup a project. Again well use the android tool, this time to create a new project. I’m going to create the project in the directory ~/projects/android/hello:
niki@redblacktree:~/projects/android/hello$ android create project --name HelloAndroid --activity HelloAndroid --path ./ --package com.examples.helloandroid --target 2
This will create a new project in the current directory (–path ./) with the name “HelloAndroid” (–name HelloAndroid). It will be targeted towards Android 1.6 (–target 2). It will create a Java source file containing an Activity “HelloAndroid” (–activity HelloAndroid) and will be in the namespace “com.examples.helloandroid” (–package com.examples.helloandroid).
We can now use Apache Ant to build our project:
niki@redblacktree:~/projects/android/hello$ ant debug
This will build a debug version of our project and place the “HelloAndroid-debug.apk” in the bin directory. This application has been signed using a default debug key and is ready to be installed on a device. To do that, let’s fire up the emulator, using the virtual device we created earlier:
niki@redblacktree:~$ emulator -avd donut
Once the emulator has finished booting, we can get a list of attached devices using the Android Debug Bridge or adb:
niki@redblacktree:~/projects/android/hello$ adb devices
List of devices attached
If there is only one device attached, then you can install the application using ant:
niki@redblacktree:~/projects/android/hello$ ant install
Which will automatically remove any previous versions installed on the device and install the current build. Alternatively you can use adb to install the application:
niki@redblacktree:~/projects/android/hello$ adb install bin/HelloAndroid-debug.apk
This will fail, however, if you have already installed a previous version of the application on the device. If that is the case, you need to uninstall it first:
niki@redblacktree:~/projects/android/hello$ adb uninstall com.examples.helloandroid
Note that you must specify the application by the name of its package.
Finally if you have more than one device attached, (say, a phone and an emulator) then you must specify which device (using the name returned from adb devices) using -s:
niki@redblacktree:~/projects/android/hello$ adb -s emulator-5554 install bin/HelloAndroid-debug.apk
Now you can just navigate to the application on the emulator or on your phone and run it! You’ll notice by default it says “Hello World, HelloAndroid!”
That’s the basics of setting up, building and running an application using the CLI instead of eclipse. In the next post I’ll go over release builds and signing your applications.