How to set up android SDK for command line development on linux?

user292344 picture user292344 · Mar 12, 2010 · Viewed 11.7k times · Source

I'm trying to set up the android SDK to develop a simple program on the command line in Linux (Ubuntu 9.10). I tried eclipse, but it has know problems running on Ubuntu, so I gave up on it. Here's what I've done so far:

  1. downloaded android-sdk_r05-linux_86.tgz from http://developer.android.com/sdk/index.html
  2. tar xvzf android-sdk_r05-linux_86.tgz
  3. ln -s android-sdk-linux_86 android
  4. in .tcshrc added setenv PATH .....:/home/user/android/tools
  5. source .tcshrc
  6. ran 'android'. This opened a gui. Under available packages: I installed everything, and quit the gui.
  7. ran 'android list targets' and It listed these:

Available Android targets:

id: 1 or "android-3" Name: Android 1.5 Type: Platform API level: 3 Revision: 1 Skins: HVGA-P, HVGA (default), QVGA-P, QVGA-L, HVGA-L

id: 2 or "Google Inc.:Google APIs:3" Name: Google APIs Type: Add-On Vendor: Google Inc. Revision: 3 Description: Android + Google APIs Based on Android 1.5 (API level 3) Libraries: * com.google.android.maps (maps.jar) API for Google Maps Skins: QVGA-P, HVGA-L, HVGA (default), QVGA-L, HVGA-P

id: 3 or "android-4" Name: Android 1.6 Type: Platform API level: 4 Revision: 1 Skins: HVGA (default), WVGA800, WVGA854, QVGA

id: 4 or "Google Inc.:Google APIs:4" Name: Google APIs Type: Add-On Vendor: Google Inc. Revision: 2 Description: Android + Google APIs Based on Android 1.6 (API level 4) Libraries: * com.google.android.maps (maps.jar) API for Google Maps Skins: WVGA854, HVGA (default), QVGA, WVGA800

id: 5 or "android-6" Name: Android 2.0.1 Type: Platform API level: 6 Revision: 1 Skins: WQVGA432, HVGA (default), WVGA800, WVGA854, WQVGA400, QVGA id: 6 or "Google Inc.:Google APIs:6" Name: Google APIs Type: Add-On Vendor: Google Inc. Revision: 1 Description: Android + Google APIs Based on Android 2.0.1 (API level 6) Libraries: * com.google.android.maps (maps.jar) API for Google Maps Skins: WQVGA400, WVGA854, HVGA (default), WQVGA432, QVGA, WVGA800

id: 7 or "android-7" Name: Android 2.1 Type: Platform API level: 7 Revision: 1 Skins: WQVGA432, HVGA (default), WVGA800, WVGA854, WQVGA400, QVGA

id: 8 or "Google Inc.:Google APIs:7" Name: Google APIs Type: Add-On Vendor: Google Inc. Revision: 1 Description: Android + Google APIs Based on Android 2.1 (API level 7) Libraries: * com.google.android.maps (maps.jar) API for Google Maps Skins: WQVGA400, WVGA854, HVGA (default), WQVGA432, QVGA, WVGA800

I want to create a simple hello world program for my motorola droid. Which of these targets should I use?

How do I see the Skins?

If I run 'android' from the command line it says that that there are no virtual devices. Is a virtual device the same as a target?

How do I get a droid skin and/or a droid target and/or a droid virtual device?


I THINK that I need to run something like 'android create avd --target 2 --name my_avd', but not sure. Is there a step-by-step list of how to do this somewhere?

thanks, Bob

Later:

I figured out that I had to create targets (=virtual devices) like this:

android create avd -t 1 -n myavd1
.......
android create avd -t 8 -n myavd8

This gave me 8 virtual devices in the gui when I ran 'android' from the command line.

Does anyone know what api level / platform to use for the Droid? And where to get the right skin? Is there anything hardware-specifications, that I need to know for Droid development?

Finally, are there any lists of steps to create a hello world app from the command line (linux) and run it on the emulator and then run it on a real phone?

Bob

Answer

Jake Wharton picture Jake Wharton · Apr 11, 2011

Though I routinely use an IDE (or a GUI wrapper) for development, I find Android's CLI to be particularly displeasing.

I have recently begun converting all of my Android projects to be Maven manged. There is a growing community around using this method and it can be quite pleasant.

The idea is built around the maven-android-plugin which does all the heavy lifting. There are samples which show various use cases (non-Java languages, multi-module projects, etc.). Tedious CLI tasks such as shrinking the APK size with proguard, signing the APK, and zipaligning the APK have all been automated.

There has also been a custom format, .apklib, developed for distributing Android library projects via Maven repositories.

When you couple all these features with the already existing advantaged Maven affords (automated testing, module support, dependency management, automated release, maven site generation, etc.) you really get a very streamlined workflow.

Oh, and it can control and deploy the emulator, too!