1Subject: How to build use a Cupcake Android SDK & ADT Eclipse plugin.
2Date:    2009/03/27
3
4
5Table 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----------
170- 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-----------
371- Foreword
38-----------
39
40This explains how to use the "new" SDK provided starting with cupcake.
41The new SDK has as a different structure than the pre-cupcake ones.
42
43This 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----------------------
502- Installation steps
51----------------------
52
53First you will need to grab the zip of the SDK for your platform or build it
54yourself. Please refer to the accompanying document "howto_build_SDK.txt" if
55needed.
56
57Unzip the SDK somewhere. We'll call that directory "SDK" in command-line
58examples.
59
60Grab the new ADT Eclipse plugin zip file or build it yourself. Keep it
61somewhere (no need to unzip).
62
63
64
65--------------------
663- For Eclipse users
67--------------------
68
69
70Below we'll explain how you can upgrade your Eclipse install to the new plugin.
71If you already have a working Eclipse installation with a pre-0.9 ADT,
72another suggestion is to simply install a new copy of Eclipse and create a
73new empty workspace. This is just a precaution. The update process should
74be otherwise harmless.
75
76
77
78A- 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
104B- Updating older projects
105--------------------------
106
107If you have pre-0.9 projects in your Eclipse workspace, or if you import them
108from your code repository, these projects will fail to build at first.
109
110First 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
117The new plugin creates a "gen" folder in your project where it puts the R.java
118and all automatically generated AIDL java files. If you get an error such as:
119
120  "The type R is already defined"
121
122that means you must check to see if your old R.java or your old auto-generated
123AIDL Java files are still present in the "src" folder. If yes, remove them.
124
125Note: this does not apply to your own hand-crafted parcelable AIDL java files.
126
127Note: 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
131C- New Wizards
132--------------
133
134The "New Android Project" wizard has been expanded to use the multi-platform
135capabilities of the new SDK.
136
137There is now a "New XML File" wizard that lets you create skeleton XML resource
138files for your Android projects. This makes it easier to create a new layout, a
139new strings file, etc.
140
141Both wizard are available via File > New... as well as new icons in the main
142icon bar. If you do not see the new icons, you may need to use Window > Reset
143Perspective on your Java perspective.
144
145
146Please see step 5 "Emulator changes" below for important details on how to run
147the emulator.
148
149
150
151----------------
1524- For Ant users
153----------------
154
155
156A- build.xml has changed
157------------------------
158
159You must re-create your build.xml file.
160
161First 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
167Then use the new "android" tool to create a new build.xml:
168
169  $ SDK/tools/android update project --path /path/to/my-project
170
171or
172
173  $ cd my-project
174  $ SDK/tools/android update project --path .
175
176
177A "gen" folder will be created the first time you build and your R.java and
178your AIDL Java files will be generated in this "gen" folder. You MUST remove
179the old R.java and old auto-generated AIDL java files manually. (Note: this
180does not apply to your own hand-crafted parcelabe AIDL java files.)
181
182
183B- Where is activitycreator?
184----------------------------
185
186Note that the "activitycreator" tool has been replaced by the new "android"
187tool 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
194Please see paragraph 5 below for important details on how to run the emulator
195and the meaning of that "--target 1" parameter.
196
197
198
199----------------------------------
2005- Targets, AVDs, Emulator changes
201----------------------------------
202
203This applies to BOTH Eclipse and Ant users.
204
205One major change with the emulator is that now you must pre-create an "Android
206Virtual Device" (a.k.a "AVD") before you run the emulator.
207
208
209
210A- What is an AVD and why do I need one?
211----------------------------------------
212
213What 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
221There is a lot more explanation given by the emulator. Please run the help
222command given above to read the rest.
223
224The bottom line is that you can create many emulator configurations, or "AVDs",
225each with their own system image and most important each with their own user
226data and SD card data. Then you tell Eclipse or the emulator which one to use
227to debug or run your applications.
228
229
230Note for Eclipse users: eventually there will be a user interface to do all of
231these operations. For right now, please use the command line interface.
232
233
234B- Listing targets and AVDs
235---------------------------
236
237There is a new tool called "android" in the SDK that lets you know which
238"target" and AVDs you can use.
239
240A target is a specific version of Android that you can use. By default the SDK
241comes with an "Android 1.5" target, codenamed "cupcake". In the future there
242will be more versions of Android to use, e.g. "Android 2.0" or specific add-ons
243provided by hardware manufacturers. When you want to run an emulator, you need
244to specify a given flavor of Android: this is the "target".
245
246
247To learn about available targets in your SDK, use this command:
248
249  $ SDK/tools/android list targets
250
251This 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
258Note the "[1]". Later you will need to reference this as "--target 1" on the
259command line.
260
261
262Similarly you can list the available AVDs:
263
264  $ SDK/tools/android list avds
265
266Which 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
277C- Creating an AVD
278------------------
279
280To create a configuration:
281
282  $ SDK/tools/android create avd --name my_avd_name --target 1
283
284
285where "target 1" is the index of a target listed by "android list targets".
286
287The AVD name is purely an identifier used to refer to the AVD later.
288Since it is used as directory name, please avoid using shell or path specific
289characters.
290
291To learn the various options available when creating an AVD, simply type:
292
293  $ SDK/tools/android create avd
294
295The android tool will automatically print an explanation of required arguments.
296
297
298
299D- Invoking an AVD from the command-line
300----------------------------------------
301
302To use this AVD in the emulator from the command-line, type:
303
304  $ SDK/tools/emulator @my_avd_name
305
306
307For more options, please consult the emulator help:
308
309  $ SDK/tools/emulator -help-virtual-device
310
311
312
313E- Invoking an AVD from Eclipse
314-------------------------------
315
316By default Android projects in Eclipse have an "automatic target" mode.
317In 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
325Alternatively you can edit the "launch configuration" on your Android project
326in Eclipse by selecting the menu Run > Run Configurations. In the "target" tab
327of 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
338F- AVD concurrency
339------------------
340
341You can no longer run several emulators at the same time on the same
342configuration.
343
344Before this used to put the second or more emulators in a transient read-only
345mode that would not save user data.
346
347Now you just need to create as many AVDs as you want to run emulators.
348
349For example if you are working on a client/server application for Android, you
350could create a "client" AVD and a "server" AVD then run them both at once. The
351emulator window will show you the AVD name so that you know which one is which.
352
353Example:
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-------------
3636- Conclusion
364-------------
365
366This completes the howto guide on how to use the new Cupcake SDK.
367Feedback is welcome on the public Android Open Source forums:
368  http://source.android.com/community
369
370-end-
371
372