| 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/community |
| |
| -end- |
| |