Subject: How to build use a Cupcake Android SDK & ADT Eclipse plugin.
Date:    2009/03/27


Table of content:
  0- License
  1- Foreword
  2- Installation steps
  3- For Eclipse users
  4- For Ant users
  5- Targets, AVDs, Emulator changes
  6- Conclusion



----------
0- License
----------

 Copyright (C) 2009 The Android Open Source Project

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.



-----------
1- Foreword
-----------

This explains how to use the "new" SDK provided starting with cupcake.
The new SDK has as a different structure than the pre-cupcake ones.

This means:
- The new SDK does not work with older Eclipse plugins (ADT 0.8)
- The old SDKs (1.0 and 1.1) do NOT work with this Eclipse plugin (ADT 0.9)



----------------------
2- Installation steps
----------------------

First you will need to grab the zip of the SDK for your platform or build it
yourself. Please refer to the accompanying document "howto_build_SDK.txt" if
needed.

Unzip the SDK somewhere. We'll call that directory "SDK" in command-line
examples.

Grab the new ADT Eclipse plugin zip file or build it yourself. Keep it
somewhere (no need to unzip).



--------------------
3- For Eclipse users
--------------------


Below we'll explain how you can upgrade your Eclipse install to the new plugin.
If you already have a working Eclipse installation with a pre-0.9 ADT,
another suggestion is to simply install a new copy of Eclipse and create a
new empty workspace. This is just a precaution. The update process should
be otherwise harmless.



A- Setting up Eclipse
---------------------

- You must have Eclipse 3.3 or 3.4. Eclipse 3.2 is not longer supported.

  There are many flavors, or "editions", of Eclipse. To develop, we'd recommend
  the "Java" edition. The "RCP" one is totally suitable too. The J2EE one is
  probably overkill.


- If updating an existing Eclipse, use Help > Software Update and please
  uninstall the two features of the previous ADT: the "editors" feature and the
  ADT feature itself.

  => If you don't you will get a conflict on editors when installing
     the new one.

- Using Help > Software Update, add a new "archived site", point it to the new
  adt.zip (e.g. android-eclipse-<some-id>.zip), select the "Install" button at
  the top right and restart eclipse as needed.

- After it restarts, please use Window > Preferences > Android and select
  the new SDK folder that you unzipped in paragraph 2.



B- Updating older projects
--------------------------

If you have pre-0.9 projects in your Eclipse workspace, or if you import them
from your code repository, these projects will fail to build at first.

First right-click on the project and select "Properties":

- In the properties, open the Android panel and select the platform to use.
  The SDK comes with a 1.5 platform. Select it and close the properties panel.
- Do a clean build.


The new plugin creates a "gen" folder in your project where it puts the R.java
and all automatically generated AIDL java files. If you get an error such as:

  "The type R is already defined"

that means you must check to see if your old R.java or your old auto-generated
AIDL Java files are still present in the "src" folder. If yes, remove them.

Note: this does not apply to your own hand-crafted parcelable AIDL java files.

Note: if you want to reuse the project with an older Eclipse ADT install,
      simply remove the "gen" folder from the build path of the project.


C- New Wizards
--------------

The "New Android Project" wizard has been expanded to use the multi-platform
capabilities of the new SDK.

There is now a "New XML File" wizard that lets you create skeleton XML resource
files for your Android projects. This makes it easier to create a new layout, a
new strings file, etc.

Both wizard are available via File > New... as well as new icons in the main
icon bar. If you do not see the new icons, you may need to use Window > Reset
Perspective on your Java perspective.


Please see step 5 "Emulator changes" below for important details on how to run
the emulator.



----------------
4- For Ant users
----------------


A- build.xml has changed
------------------------

You must re-create your build.xml file.

First if you had customized your build.xml, make a copy of it:

  $ cd my-project
  $ cp build.xml build.xml.old


Then use the new "android" tool to create a new build.xml:

  $ SDK/tools/android update project --path /path/to/my-project

or

  $ cd my-project
  $ SDK/tools/android update project --path .


A "gen" folder will be created the first time you build and your R.java and
your AIDL Java files will be generated in this "gen" folder. You MUST remove
the old R.java and old auto-generated AIDL java files manually. (Note: this
does not apply to your own hand-crafted parcelabe AIDL java files.)


B- Where is activitycreator?
----------------------------

Note that the "activitycreator" tool has been replaced by the new "android"
tool too. Example of how to create a new Ant project:

  $ SDK/tools/android create project --path /path/to/my/project --name ProjectName
      --package com.mycompany.myapp --activity MyActivityClass
      --target 1 --mode activity


Please see paragraph 5 below for important details on how to run the emulator
and the meaning of that "--target 1" parameter.



----------------------------------
5- Targets, AVDs, Emulator changes
----------------------------------

This applies to BOTH Eclipse and Ant users.

One major change with the emulator is that now you must pre-create an "Android
Virtual Device" (a.k.a "AVD") before you run the emulator.



A- What is an AVD and why do I need one?
----------------------------------------

What is an "AVD"? If you forget, just run:

  $ SDK/tools/emulator -help-virtual-device

  An Android Virtual Device (AVD) models a single virtual device running the
  Android platform that has, at least, its own kernel, system image and data
  partition.

There is a lot more explanation given by the emulator. Please run the help
command given above to read the rest.

The bottom line is that you can create many emulator configurations, or "AVDs",
each with their own system image and most important each with their own user
data and SD card data. Then you tell Eclipse or the emulator which one to use
to debug or run your applications.


Note for Eclipse users: eventually there will be a user interface to do all of
these operations. For right now, please use the command line interface.


B- Listing targets and AVDs
---------------------------

There is a new tool called "android" in the SDK that lets you know which
"target" and AVDs you can use.

A target is a specific version of Android that you can use. By default the SDK
comes with an "Android 1.5" target, codenamed "cupcake". In the future there
will be more versions of Android to use, e.g. "Android 2.0" or specific add-ons
provided by hardware manufacturers. When you want to run an emulator, you need
to specify a given flavor of Android: this is the "target".


To learn about available targets in your SDK, use this command:

  $ SDK/tools/android list targets

This will give you an output such as:

  Available Android targets:
  [1] Android 1.5
       API level: 3
       Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P

Note the "[1]". Later you will need to reference this as "--target 1" on the
command line.


Similarly you can list the available AVDs:

  $ SDK/tools/android list avds

Which might output something as:

  Available Android Virtual Devices:
      Name: my_avd
      Path: C:\Users\<username>\.android\avd\my_avd.avd
    Target: Android 1.5 (API level 3)
      Skin: 320x480
    Sdcard: 16M



C- Creating an AVD
------------------

To create a configuration:

  $ SDK/tools/android create avd --name my_avd_name --target 1


where "target 1" is the index of a target listed by "android list targets".

The AVD name is purely an identifier used to refer to the AVD later.
Since it is used as directory name, please avoid using shell or path specific
characters.

To learn the various options available when creating an AVD, simply type:

  $ SDK/tools/android create avd

The android tool will automatically print an explanation of required arguments.



D- Invoking an AVD from the command-line
----------------------------------------

To use this AVD in the emulator from the command-line, type:

  $ SDK/tools/emulator @my_avd_name


For more options, please consult the emulator help:

  $ SDK/tools/emulator -help-virtual-device



E- Invoking an AVD from Eclipse
-------------------------------

By default Android projects in Eclipse have an "automatic target" mode.
In this mode, when a project is deployed in debug or run, it checks:
- If there's one running device or emulator, this is used for deployment.
- If there's more than one running device or emulator, a "device chooser" is
  shown to let the user select which one to use.
- If there are no running devices or emulators, ADT looks at available AVDs.
  If one matches the project configuration (e.g. same API level), it is
  automatically used.

Alternatively you can edit the "launch configuration" on your Android project
in Eclipse by selecting the menu Run > Run Configurations. In the "target" tab
of the configuration, you can choose:

- Manual or automatic targetting mode.

  - Manual means to always present the device chooser.
  - Automatic is the behavior explained above.

- In automatic mode, which AVD is preferred. If none is selected, the first
  suitable is used.


F- AVD concurrency
------------------

You can no longer run several emulators at the same time on the same
configuration.

Before this used to put the second or more emulators in a transient read-only
mode that would not save user data.

Now you just need to create as many AVDs as you want to run emulators.

For example if you are working on a client/server application for Android, you
could create a "client" AVD and a "server" AVD then run them both at once. The
emulator window will show you the AVD name so that you know which one is which.

Example:

  $ SDK/tools/android create avd --name client --target 1 --sdcard 16M --skin HVGA
  $ SDK/tools/android create avd --name server --target 1 --sdcard 32M --skin HVGA-P
  $ SDK/tools/emulator @server &
  $ SDK/tools/emulator @client &



-------------
6- Conclusion
-------------

This completes the howto guide on how to use the new Cupcake SDK.
Feedback is welcome on the public Android Open Source forums:
  http://source.android.com/discuss

-end-

