Raphael Moll | 11fcb51 | 2009-03-31 14:16:11 -0700 | [diff] [blame] | 1 | Subject: How to build use a Cupcake Android SDK & ADT Eclipse plugin. |
| 2 | Date: 2009/03/27 |
| 3 | |
| 4 | |
| 5 | Table of content: |
| 6 | 0- License |
| 7 | 1- Foreword |
| 8 | 2- Installation steps |
| 9 | 3- For Eclipse users |
| 10 | 4- For Ant users |
| 11 | 5- Targets, AVDs, Emulator changes |
| 12 | 6- Conclusion |
| 13 | |
| 14 | |
| 15 | |
| 16 | ---------- |
| 17 | 0- License |
| 18 | ---------- |
| 19 | |
| 20 | Copyright (C) 2009 The Android Open Source Project |
| 21 | |
| 22 | Licensed under the Apache License, Version 2.0 (the "License"); |
| 23 | you may not use this file except in compliance with the License. |
| 24 | You may obtain a copy of the License at |
| 25 | |
| 26 | http://www.apache.org/licenses/LICENSE-2.0 |
| 27 | |
| 28 | Unless required by applicable law or agreed to in writing, software |
| 29 | distributed under the License is distributed on an "AS IS" BASIS, |
| 30 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 31 | See the License for the specific language governing permissions and |
| 32 | limitations under the License. |
| 33 | |
| 34 | |
| 35 | |
| 36 | ----------- |
| 37 | 1- Foreword |
| 38 | ----------- |
| 39 | |
| 40 | This explains how to use the "new" SDK provided starting with cupcake. |
| 41 | The new SDK has as a different structure than the pre-cupcake ones. |
| 42 | |
| 43 | This means: |
| 44 | - The new SDK does not work with older Eclipse plugins (ADT 0.8) |
| 45 | - The old SDKs (1.0 and 1.1) do NOT work with this Eclipse plugin (ADT 0.9) |
| 46 | |
| 47 | |
| 48 | |
| 49 | ---------------------- |
| 50 | 2- Installation steps |
| 51 | ---------------------- |
| 52 | |
| 53 | First you will need to grab the zip of the SDK for your platform or build it |
| 54 | yourself. Please refer to the accompanying document "howto_build_SDK.txt" if |
| 55 | needed. |
| 56 | |
| 57 | Unzip the SDK somewhere. We'll call that directory "SDK" in command-line |
| 58 | examples. |
| 59 | |
| 60 | Grab the new ADT Eclipse plugin zip file or build it yourself. Keep it |
| 61 | somewhere (no need to unzip). |
| 62 | |
| 63 | |
| 64 | |
| 65 | -------------------- |
| 66 | 3- For Eclipse users |
| 67 | -------------------- |
| 68 | |
| 69 | |
| 70 | Below we'll explain how you can upgrade your Eclipse install to the new plugin. |
| 71 | If you already have a working Eclipse installation with a pre-0.9 ADT, |
| 72 | another suggestion is to simply install a new copy of Eclipse and create a |
| 73 | new empty workspace. This is just a precaution. The update process should |
| 74 | be otherwise harmless. |
| 75 | |
| 76 | |
| 77 | |
| 78 | A- Setting up Eclipse |
| 79 | --------------------- |
| 80 | |
| 81 | - You must have Eclipse 3.3 or 3.4. Eclipse 3.2 is not longer supported. |
| 82 | |
| 83 | There are many flavors, or "editions", of Eclipse. To develop, we'd recommend |
| 84 | the "Java" edition. The "RCP" one is totally suitable too. The J2EE one is |
| 85 | probably overkill. |
| 86 | |
| 87 | |
| 88 | - If updating an existing Eclipse, use Help > Software Update and please |
| 89 | uninstall the two features of the previous ADT: the "editors" feature and the |
| 90 | ADT feature itself. |
| 91 | |
| 92 | => If you don't you will get a conflict on editors when installing |
| 93 | the new one. |
| 94 | |
| 95 | - Using Help > Software Update, add a new "archived site", point it to the new |
| 96 | adt.zip (e.g. android-eclipse-<some-id>.zip), select the "Install" button at |
| 97 | the top right and restart eclipse as needed. |
| 98 | |
| 99 | - After it restarts, please use Window > Preferences > Android and select |
| 100 | the new SDK folder that you unzipped in paragraph 2. |
| 101 | |
| 102 | |
| 103 | |
| 104 | B- Updating older projects |
| 105 | -------------------------- |
| 106 | |
| 107 | If you have pre-0.9 projects in your Eclipse workspace, or if you import them |
| 108 | from your code repository, these projects will fail to build at first. |
| 109 | |
| 110 | First right-click on the project and select "Properties": |
| 111 | |
| 112 | - In the properties, open the Android panel and select the platform to use. |
| 113 | The SDK comes with a 1.5 platform. Select it and close the properties panel. |
| 114 | - Do a clean build. |
| 115 | |
| 116 | |
| 117 | The new plugin creates a "gen" folder in your project where it puts the R.java |
| 118 | and all automatically generated AIDL java files. If you get an error such as: |
| 119 | |
| 120 | "The type R is already defined" |
| 121 | |
| 122 | that means you must check to see if your old R.java or your old auto-generated |
| 123 | AIDL Java files are still present in the "src" folder. If yes, remove them. |
| 124 | |
| 125 | Note: this does not apply to your own hand-crafted parcelable AIDL java files. |
| 126 | |
| 127 | Note: if you want to reuse the project with an older Eclipse ADT install, |
| 128 | simply remove the "gen" folder from the build path of the project. |
| 129 | |
| 130 | |
| 131 | C- New Wizards |
| 132 | -------------- |
| 133 | |
| 134 | The "New Android Project" wizard has been expanded to use the multi-platform |
| 135 | capabilities of the new SDK. |
| 136 | |
| 137 | There is now a "New XML File" wizard that lets you create skeleton XML resource |
| 138 | files for your Android projects. This makes it easier to create a new layout, a |
| 139 | new strings file, etc. |
| 140 | |
| 141 | Both wizard are available via File > New... as well as new icons in the main |
| 142 | icon bar. If you do not see the new icons, you may need to use Window > Reset |
| 143 | Perspective on your Java perspective. |
| 144 | |
| 145 | |
| 146 | Please see step 5 "Emulator changes" below for important details on how to run |
| 147 | the emulator. |
| 148 | |
| 149 | |
| 150 | |
| 151 | ---------------- |
| 152 | 4- For Ant users |
| 153 | ---------------- |
| 154 | |
| 155 | |
| 156 | A- build.xml has changed |
| 157 | ------------------------ |
| 158 | |
| 159 | You must re-create your build.xml file. |
| 160 | |
| 161 | First if you had customized your build.xml, make a copy of it: |
| 162 | |
| 163 | $ cd my-project |
| 164 | $ cp build.xml build.xml.old |
| 165 | |
| 166 | |
| 167 | Then use the new "android" tool to create a new build.xml: |
| 168 | |
| 169 | $ SDK/tools/android update project --path /path/to/my-project |
| 170 | |
| 171 | or |
| 172 | |
| 173 | $ cd my-project |
| 174 | $ SDK/tools/android update project --path . |
| 175 | |
| 176 | |
| 177 | A "gen" folder will be created the first time you build and your R.java and |
| 178 | your AIDL Java files will be generated in this "gen" folder. You MUST remove |
| 179 | the old R.java and old auto-generated AIDL java files manually. (Note: this |
| 180 | does not apply to your own hand-crafted parcelabe AIDL java files.) |
| 181 | |
| 182 | |
| 183 | B- Where is activitycreator? |
| 184 | ---------------------------- |
| 185 | |
| 186 | Note that the "activitycreator" tool has been replaced by the new "android" |
| 187 | tool too. Example of how to create a new Ant project: |
| 188 | |
| 189 | $ SDK/tools/android create project --path /path/to/my/project --name ProjectName |
| 190 | --package com.mycompany.myapp --activity MyActivityClass |
| 191 | --target 1 --mode activity |
| 192 | |
| 193 | |
| 194 | Please see paragraph 5 below for important details on how to run the emulator |
| 195 | and the meaning of that "--target 1" parameter. |
| 196 | |
| 197 | |
| 198 | |
| 199 | ---------------------------------- |
| 200 | 5- Targets, AVDs, Emulator changes |
| 201 | ---------------------------------- |
| 202 | |
| 203 | This applies to BOTH Eclipse and Ant users. |
| 204 | |
| 205 | One major change with the emulator is that now you must pre-create an "Android |
| 206 | Virtual Device" (a.k.a "AVD") before you run the emulator. |
| 207 | |
| 208 | |
| 209 | |
| 210 | A- What is an AVD and why do I need one? |
| 211 | ---------------------------------------- |
| 212 | |
| 213 | What is an "AVD"? If you forget, just run: |
| 214 | |
| 215 | $ SDK/tools/emulator -help-virtual-device |
| 216 | |
| 217 | An Android Virtual Device (AVD) models a single virtual device running the |
| 218 | Android platform that has, at least, its own kernel, system image and data |
| 219 | partition. |
| 220 | |
| 221 | There is a lot more explanation given by the emulator. Please run the help |
| 222 | command given above to read the rest. |
| 223 | |
| 224 | The bottom line is that you can create many emulator configurations, or "AVDs", |
| 225 | each with their own system image and most important each with their own user |
| 226 | data and SD card data. Then you tell Eclipse or the emulator which one to use |
| 227 | to debug or run your applications. |
| 228 | |
| 229 | |
| 230 | Note for Eclipse users: eventually there will be a user interface to do all of |
| 231 | these operations. For right now, please use the command line interface. |
| 232 | |
| 233 | |
| 234 | B- Listing targets and AVDs |
| 235 | --------------------------- |
| 236 | |
| 237 | There is a new tool called "android" in the SDK that lets you know which |
| 238 | "target" and AVDs you can use. |
| 239 | |
| 240 | A target is a specific version of Android that you can use. By default the SDK |
| 241 | comes with an "Android 1.5" target, codenamed "cupcake". In the future there |
| 242 | will be more versions of Android to use, e.g. "Android 2.0" or specific add-ons |
| 243 | provided by hardware manufacturers. When you want to run an emulator, you need |
| 244 | to specify a given flavor of Android: this is the "target". |
| 245 | |
| 246 | |
| 247 | To learn about available targets in your SDK, use this command: |
| 248 | |
| 249 | $ SDK/tools/android list targets |
| 250 | |
| 251 | This will give you an output such as: |
| 252 | |
| 253 | Available Android targets: |
| 254 | [1] Android 1.5 |
| 255 | API level: 3 |
| 256 | Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P |
| 257 | |
| 258 | Note the "[1]". Later you will need to reference this as "--target 1" on the |
| 259 | command line. |
| 260 | |
| 261 | |
| 262 | Similarly you can list the available AVDs: |
| 263 | |
| 264 | $ SDK/tools/android list avds |
| 265 | |
| 266 | Which might output something as: |
| 267 | |
| 268 | Available Android Virtual Devices: |
| 269 | Name: my_avd |
| 270 | Path: C:\Users\<username>\.android\avd\my_avd.avd |
| 271 | Target: Android 1.5 (API level 3) |
| 272 | Skin: 320x480 |
| 273 | Sdcard: 16M |
| 274 | |
| 275 | |
| 276 | |
| 277 | C- Creating an AVD |
| 278 | ------------------ |
| 279 | |
| 280 | To create a configuration: |
| 281 | |
| 282 | $ SDK/tools/android create avd --name my_avd_name --target 1 |
| 283 | |
| 284 | |
| 285 | where "target 1" is the index of a target listed by "android list targets". |
| 286 | |
| 287 | The AVD name is purely an identifier used to refer to the AVD later. |
| 288 | Since it is used as directory name, please avoid using shell or path specific |
| 289 | characters. |
| 290 | |
| 291 | To learn the various options available when creating an AVD, simply type: |
| 292 | |
| 293 | $ SDK/tools/android create avd |
| 294 | |
| 295 | The android tool will automatically print an explanation of required arguments. |
| 296 | |
| 297 | |
| 298 | |
| 299 | D- Invoking an AVD from the command-line |
| 300 | ---------------------------------------- |
| 301 | |
| 302 | To use this AVD in the emulator from the command-line, type: |
| 303 | |
| 304 | $ SDK/tools/emulator @my_avd_name |
| 305 | |
| 306 | |
| 307 | For more options, please consult the emulator help: |
| 308 | |
| 309 | $ SDK/tools/emulator -help-virtual-device |
| 310 | |
| 311 | |
| 312 | |
| 313 | E- Invoking an AVD from Eclipse |
| 314 | ------------------------------- |
| 315 | |
| 316 | By default Android projects in Eclipse have an "automatic target" mode. |
| 317 | In this mode, when a project is deployed in debug or run, it checks: |
| 318 | - If there's one running device or emulator, this is used for deployment. |
| 319 | - If there's more than one running device or emulator, a "device chooser" is |
| 320 | shown to let the user select which one to use. |
| 321 | - If there are no running devices or emulators, ADT looks at available AVDs. |
| 322 | If one matches the project configuration (e.g. same API level), it is |
| 323 | automatically used. |
| 324 | |
| 325 | Alternatively you can edit the "launch configuration" on your Android project |
| 326 | in Eclipse by selecting the menu Run > Run Configurations. In the "target" tab |
| 327 | of the configuration, you can choose: |
| 328 | |
| 329 | - Manual or automatic targetting mode. |
| 330 | |
| 331 | - Manual means to always present the device chooser. |
| 332 | - Automatic is the behavior explained above. |
| 333 | |
| 334 | - In automatic mode, which AVD is preferred. If none is selected, the first |
| 335 | suitable is used. |
| 336 | |
| 337 | |
| 338 | F- AVD concurrency |
| 339 | ------------------ |
| 340 | |
| 341 | You can no longer run several emulators at the same time on the same |
| 342 | configuration. |
| 343 | |
| 344 | Before this used to put the second or more emulators in a transient read-only |
| 345 | mode that would not save user data. |
| 346 | |
| 347 | Now you just need to create as many AVDs as you want to run emulators. |
| 348 | |
| 349 | For example if you are working on a client/server application for Android, you |
| 350 | could create a "client" AVD and a "server" AVD then run them both at once. The |
| 351 | emulator window will show you the AVD name so that you know which one is which. |
| 352 | |
| 353 | Example: |
| 354 | |
| 355 | $ SDK/tools/android create avd --name client --target 1 --sdcard 16M --skin HVGA |
| 356 | $ SDK/tools/android create avd --name server --target 1 --sdcard 32M --skin HVGA-P |
| 357 | $ SDK/tools/emulator @server & |
| 358 | $ SDK/tools/emulator @client & |
| 359 | |
| 360 | |
| 361 | |
| 362 | ------------- |
| 363 | 6- Conclusion |
| 364 | ------------- |
| 365 | |
| 366 | This completes the howto guide on how to use the new Cupcake SDK. |
| 367 | Feedback is welcome on the public Android Open Source forums: |
| 368 | http://source.android.com/discuss |
| 369 | |
| 370 | -end- |
| 371 | |