• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=<uses-sdk>
2parent.title=The AndroidManifest.xml File
3parent.link=manifest-intro.html
4@jd:body
5
6
7<div id="qv-wrapper">
8<div id="qv">
9
10<h2>In this document</h2>
11<ol>
12  <li><a href="#ApiLevels">What is API Level?</a></li>
13  <li><a href="#uses">Uses of API Level in Android</a></li>
14  <li><a href="#considerations">Development Considerations</a>
15    <ol>
16      <li><a href="#fc">Application forward compatibility</a></li>
17      <li><a href="#bc">Application backward compatibility</a></li>
18      <li><a href="#platform">Selecting a platform version and API Level</a></li>
19      <li><a href="#apilevel">Declaring a minimum API Level</a></li>
20      <li><a href="#testing">Testing against higher API Levels</a></li>
21    </ol>
22  </li>
23  <li><a href="#provisional">Using a Provisional API Level</a></li>
24  <li><a href="#filtering">Filtering the Reference Documentation by API Level</a></li>
25</ol>
26</div>
27</div>
28
29<div class="sidebox-wrapper">
30<div class="sidebox">
31    <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
32    <p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
33    <p style="padding-top:1em;">Google Play uses the <code>&lt;uses-sdk&gt;</code>
34    attributes declared in your app manifest to filter your app from devices
35    that do not meet it's platform version requirements. Before setting these
36    attributes, make sure that you understand
37    <a href="{@docRoot}google/play/filters.html">Google Play filters</a>. </p>
38  </div>
39</div>
40
41<dl class="xml">
42<dt>syntax:</dt>
43<dd><pre>
44&lt;uses-sdk android:<a href="#min">minSdkVersion</a>="<i>integer</i>"
45          android:<a href="#target">targetSdkVersion</a>="<i>integer</i>"
46          android:<a href="#max">maxSdkVersion</a>="<i>integer</i>" /&gt;</pre></dd>
47
48<dt>contained in:</dt>
49<dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code></dd>
50
51<dt>description:</dt>
52<dd>Lets you express an application's compatibility with one or more versions of the Android platform,
53by means of an API Level integer. The API Level expressed by an application will be compared to the
54API Level of a given Android system, which may vary among different Android devices.
55</p>
56
57<p>Despite its name, this element is used to specify the API Level, <em>not</em>
58the version number of the SDK (software development kit) or Android platform.
59The API Level is always a single integer. You cannot derive the API Level from
60its associated Android version number (for example, it is not the same as the
61major version or the sum of the major and minor versions).</p>
62
63<p>Also read the document about
64<a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a>.
65</p></dd>
66
67<dt>attributes:</dt>
68
69<dd>
70<dl class="attr">
71  <dt><a name="min"></a>{@code android:minSdkVersion}</dt>
72  <dd>An integer designating the minimum API Level required
73  for the application to run. The Android system will prevent the user from installing
74  the application if the system's API Level is lower than the value specified in
75  this attribute. You should always declare this attribute.
76
77  <p class="caution"><strong>Caution:</strong> If you do not declare this
78  attribute, the system assumes a default value of "1", which indicates that your
79  application is compatible with all versions of Android. If your application is
80  <em>not</em> compatible with all versions (for instance, it uses APIs introduced
81  in API Level 3) and you have not declared the proper <code>minSdkVersion</code>,
82  then when installed on a system with an API Level less than 3, the application
83  will crash during runtime when attempting to access the unavailable APIs. For
84  this reason, be certain to declare the appropriate API Level in the
85  <code>minSdkVersion</code> attribute.</p>
86  </dd>
87
88  <dt><a name="target"></a>{@code android:targetSdkVersion}</dt>
89  <dd>An integer designating the API Level that the application targets. If not set, the default
90value equals that given to {@code minSdkVersion}.
91
92  <p>This attribute informs the system that you have tested against the target version and the
93system should not enable any compatibility behaviors to maintain your app's forward-compatibility
94with the target version. The application is still able to run on older versions (down to {@code
95minSdkVersion}).</p>
96
97  <p>As Android evolves with each new version, some behaviors and even appearances might change.
98However, if the API level of the platform is higher than the version declared by your app's {@code
99targetSdkVersion}, the system may enable compatibility behaviors to ensure that your app
100continues to work the way you expect. You can disable such compatibility
101behaviors by specifying {@code targetSdkVersion} to match the API
102level of the platform on which it's running. For example, setting this value to "11" or higher
103allows the system to apply a new default theme (Holo) to your app when running on Android 3.0 or
104higher and also disables <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
105compatibility mode</a> when running on larger screens (because support for API level 11 implicitly
106supports larger screens).</p>
107
108  <p>There are many compatibility behaviors that the system may enable based on the value you set
109for this attribute. Several of these behaviors are described by the corresponding platform versions
110in the {@link android.os.Build.VERSION_CODES} reference.</p>
111
112  <p>To maintain your application along with each Android release, you should increase
113the value of this attribute to match the latest API level, then thoroughly test your application on
114the corresponding platform version.</p>
115
116  <p>Introduced in: API Level 4</p>
117  </dd>
118
119  <dt><a name="max"></a>{@code android:maxSdkVersion}</dt>
120  <dd>An integer designating the maximum API Level on which the application is
121  designed to run.
122
123  <p>In Android 1.5, 1.6, 2.0, and 2.0.1, the system checks the value of this
124  attribute when installing an application and when re-validating the application
125  after a system update. In either case, if the application's
126  <code>maxSdkVersion</code> attribute is lower than the API Level used by
127  the system itself, then the system will not allow the application to be
128  installed. In the case of re-validation after system update, this effectively
129  removes your application from the device.
130
131  <p>To illustrate how this attribute can affect your application after system
132  updates, consider the following example: </p>
133
134  <p>An application declaring <code>maxSdkVersion="5"</code> in its
135  manifest is published on Google Play. A user whose device is running Android
136  1.6 (API Level 4) downloads and installs the app. After a few weeks, the user
137  receives an over-the-air system update to Android 2.0 (API Level 5). After the
138  update is installed, the system checks the application's
139  <code>maxSdkVersion</code> and successfully re-validates it. The
140  application functions as normal. However, some time later, the device receives
141  another system update, this time to Android 2.0.1 (API Level 6). After the
142  update, the system can no longer re-validate the application because the system's
143  own API Level (6) is now higher than the maximum supported by the application
144  (5). The system prevents the application from being visible to the user, in
145  effect removing it from the device.</p>
146
147  <p class="warning"><strong>Warning:</strong> Declaring this attribute is not
148  recommended. First, there is no need to set the attribute as means of blocking
149  deployment of your application onto new versions of the Android platform as they
150  are released. By design, new versions of the platform are fully
151  backward-compatible. Your application should work properly on new versions,
152  provided it uses only standard APIs and follows development best practices.
153  Second, note that in some cases, declaring the attribute can <strong>result in
154  your application being removed from users' devices after a system
155  update</strong> to a higher API Level. Most devices on which your application
156  is likely to be installed will receive periodic system updates over the air, so
157  you should consider their effect on your application before setting this
158  attribute.</p>
159
160  <p style="margin-bottom:1em;">Introduced in: API Level 4</p>
161
162  <div class="special">Future versions of Android (beyond Android 2.0.1) will no
163longer check or enforce the <code>maxSdkVersion</code> attribute during
164installation or re-validation. Google Play will continue to use the attribute
165as a filter, however, when presenting users with applications available for
166download. </div>
167  </dd>
168
169
170</dl></dd>
171
172<!-- ##api level indication## -->
173<dt>introduced in:</dt>
174<dd>API Level 1</dd>
175
176</dl>
177
178
179
180
181
182<!--- CONTENT FROM OLD API LEVEL DOC ---->
183
184
185
186
187<h2 id="ApiLevels">What is API Level?</h2>
188
189<p>API Level is an integer value that uniquely identifies the framework API
190revision offered by a version of the Android platform.</p>
191
192<p>The Android platform provides a framework API that applications can use to
193interact with the underlying Android system. The framework API consists of:</p>
194
195<ul>
196<li>A core set of packages and classes</li>
197<li>A set of XML elements and attributes for declaring a manifest file</li>
198<li>A set of XML elements and attributes for declaring and accessing resources</li>
199<li>A set of Intents</li>
200<li>A set of permissions that applications can request, as well as permission
201enforcements included in the system</li>
202</ul>
203
204<p>Each successive version of the Android platform can include updates to the
205Android application framework API that it delivers. </p>
206
207<p>Updates to the framework API are designed so that the new API remains
208compatible with earlier versions of the API. That is, most changes in the API
209are additive and introduce new or replacement functionality. As parts of the API
210are upgraded, the older replaced parts are deprecated but are not removed, so
211that existing applications can still use them. In a very small number of cases,
212parts of the API may be modified or removed, although typically such changes are
213only needed to ensure API robustness and application or system security. All
214other API parts from earlier revisions are carried forward without
215modification.</p>
216
217<p>The framework API that an Android platform delivers is specified using an
218integer identifier called "API Level". Each Android platform version supports
219exactly one API Level, although support is implicit for all earlier API Levels
220(down to API Level 1). The initial release of the Android platform provided
221API Level 1 and subsequent releases have incremented the API Level.</p>
222
223<p>The table below specifies the API Level supported by each version of the
224Android platform. For information about the relative numbers of devices that
225are running each version, see the <a href="{@docRoot}about/dashboards/index.html">Platform
226Versions dashboards page</a>.</p>
227
228<table>
229  <tr><th>Platform Version</th><th>API Level</th><th>VERSION_CODE</th><th>Notes</th></tr>
230
231    <tr><td><a href="{@docRoot}about/versions/android-4.2.html">Android 4.2</a></td>
232    <td><a href="{@docRoot}sdk/api_diff/17/changes.html" title="Diff Report">17</a></td>
233    <td>{@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}</td>
234    <td><a href="{@docRoot}about/versions/jelly-bean.html">Platform
235Highlights</a></td></tr>
236
237    <tr><td><a href="{@docRoot}about/versions/android-4.1.html">Android 4.1, 4.1.1</a></td>
238    <td><a href="{@docRoot}sdk/api_diff/16/changes.html" title="Diff Report">16</a></td>
239    <td>{@link android.os.Build.VERSION_CODES#JELLY_BEAN}</td>
240    <td><a href="{@docRoot}about/versions/jelly-bean.html">Platform
241Highlights</a></td></tr>
242
243    <tr><td><a href="{@docRoot}about/versions/android-4.0.3.html">Android 4.0.3, 4.0.4</a></td>
244    <td><a href="{@docRoot}sdk/api_diff/15/changes.html" title="Diff Report">15</a></td>
245    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1}</td>
246    <td rowspan="2"><a href="{@docRoot}about/versions/android-4.0-highlights.html">Platform
247Highlights</a></td></tr>
248
249    <tr><td><a href="{@docRoot}about/versions/android-4.0.html">Android 4.0, 4.0.1, 4.0.2</a></td>
250    <td><a href="{@docRoot}sdk/api_diff/14/changes.html" title="Diff Report">14</a></td>
251    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}</td>
252    </tr>
253
254    <tr><td><a href="{@docRoot}about/versions/android-3.2.html">Android 3.2</a></td>
255    <td><a href="{@docRoot}sdk/api_diff/13/changes.html" title="Diff Report">13</a></td>
256    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}</td>
257    <td><!-- <a href="{@docRoot}about/versions/android-3.2-highlights.html">Platform
258Highlights</a>--></td></tr>
259
260  <tr><td><a href="{@docRoot}about/versions/android-3.1.html">Android 3.1.x</a></td>
261    <td><a href="{@docRoot}sdk/api_diff/12/changes.html" title="Diff Report">12</a></td>
262    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR1}</td>
263    <td><a href="{@docRoot}about/versions/android-3.1-highlights.html">Platform Highlights</a></td></tr>
264
265  <tr><td><a href="{@docRoot}about/versions/android-3.0.html">Android 3.0.x</td>
266    <td><a href="{@docRoot}sdk/api_diff/11/changes.html" title="Diff Report">11</a></td>
267    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB}</td>
268    <td><a href="{@docRoot}about/versions/android-3.0-highlights.html">Platform Highlights</a></td></tr>
269
270  <tr><td><a href="{@docRoot}about/versions/android-2.3.3.html">Android 2.3.4<br>Android 2.3.3</td>
271    <td><a href="{@docRoot}sdk/api_diff/10/changes.html" title="Diff Report">10</a></td>
272    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1}</td>
273    <td rowspan="2"><a href="{@docRoot}about/versions/android-2.3-highlights.html">Platform
274Highlights</a></td></tr>
275
276  <tr><td><a href="{@docRoot}about/versions/android-2.3.html">Android 2.3.2<br>Android 2.3.1<br>Android
2772.3</td>
278    <td><a href="{@docRoot}sdk/api_diff/9/changes.html" title="Diff Report">9</a></td>
279    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD}</td>
280    </tr>
281
282  <tr><td><a href="{@docRoot}about/versions/android-2.2.html">Android 2.2.x</td>
283    <td ><a href="{@docRoot}sdk/api_diff/8/changes.html" title="Diff Report">8</a></td>
284    <td>{@link android.os.Build.VERSION_CODES#FROYO}</td>
285    <td><a href="{@docRoot}about/versions/android-2.2-highlights.html">Platform Highlights</a></td></tr>
286
287  <tr><td><a href="{@docRoot}about/versions/android-2.1.html">Android 2.1.x</td>
288    <td><a href="{@docRoot}sdk/api_diff/7/changes.html" title="Diff Report">7</a></td>
289    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_MR1}</td>
290    <td rowspan="3" ><a href="{@docRoot}about/versions/android-2.0-highlights.html">Platform
291Highlights</a></td></tr>
292
293  <tr><td><a href="{@docRoot}about/versions/android-2.0.1.html">Android 2.0.1</td>
294    <td><a href="{@docRoot}sdk/api_diff/6/changes.html" title="Diff Report">6</a></td>
295    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_0_1}</td>
296    </tr>
297
298  <tr><td><a href="{@docRoot}about/versions/android-2.0.html">Android 2.0</td>
299    <td><a href="{@docRoot}sdk/api_diff/5/changes.html" title="Diff Report">5</a></td>
300    <td>{@link android.os.Build.VERSION_CODES#ECLAIR}</td>
301    </tr>
302
303  <tr><td><a href="{@docRoot}about/versions/android-1.6.html">Android 1.6</td>
304    <td><a href="{@docRoot}sdk/api_diff/4/changes.html" title="Diff Report">4</a></td>
305    <td>{@link android.os.Build.VERSION_CODES#DONUT}</td>
306    <td><a href="{@docRoot}about/versions/android-1.6-highlights.html">Platform Highlights</a></td></tr>
307
308  <tr><td><a href="{@docRoot}about/versions/android-1.5.html">Android 1.5</td>
309    <td><a href="{@docRoot}sdk/api_diff/3/changes.html" title="Diff Report">3</a></td>
310    <td>{@link android.os.Build.VERSION_CODES#CUPCAKE}</td>
311    <td><a href="{@docRoot}about/versions/android-1.5-highlights.html">Platform Highlights</a></td></tr>
312
313  <tr><td><a href="{@docRoot}about/versions/android-1.1.html">Android 1.1</td>
314    <td>2</td>
315    <td>{@link android.os.Build.VERSION_CODES#BASE_1_1}</td><td></td></tr>
316
317  <tr><td>Android 1.0</td>
318    <td>1</td>
319    <td>{@link android.os.Build.VERSION_CODES#BASE}</td>
320    <td></td></tr>
321</table>
322
323
324<h2 id="uses">Uses of API Level in Android</h2>
325
326<p>The API Level identifier serves a key role in ensuring the best possible
327experience for users and application developers:
328
329<ul>
330<li>It lets the Android platform describe the maximum framework API revision
331that it supports</li>
332<li>It lets applications describe the framework API revision that they
333require</li>
334<li>It lets the system negotiate the installation of applications on the user's
335device, such that version-incompatible applications are not installed.</li>
336</ul>
337
338<p>Each Android platform version stores its API Level identifier internally, in
339the Android system itself. </p>
340
341<p>Applications can use a manifest element provided by the framework API &mdash;
342<code>&lt;uses-sdk&gt;</code> &mdash; to describe the minimum and maximum API
343Levels under which they are able to run, as well as the preferred API Level that
344they are designed to support. The element offers three key attributes:</p>
345
346<ul>
347<li><code>android:minSdkVersion</code> &mdash; Specifies the minimum API Level
348on which the application is able to run. The default value is "1".</li>
349<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
350on which the application is designed to run. In some cases, this allows the
351application to use manifest elements or behaviors defined in the target
352API Level, rather than being restricted to using only those defined
353for the minimum API Level.</li>
354<li><code>android:maxSdkVersion</code> &mdash; Specifies the maximum API Level
355on which the application is able to run. <strong>Important:</strong> Please read the <a
356href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
357documentation before using this attribute.  </li>
358</ul>
359
360<p>For example, to specify the minimum system API Level that an application
361requires in order to run, the application would include in its manifest a
362<code>&lt;uses-sdk&gt;</code> element with a <code>android:minSdkVersion</code>
363attribute. The value of <code>android:minSdkVersion</code> would be the integer
364corresponding to the API Level of the earliest version of the Android platform
365under which the application can run. </p>
366
367<p>When the user attempts to install an application, or when revalidating an
368appplication after a system update, the Android system first checks the
369<code>&lt;uses-sdk&gt;</code> attributes in the application's manifest and
370compares the values against its own internal API Level. The system allows the
371installation to begin only if these conditions are met:</p>
372
373<ul>
374<li>If a <code>android:minSdkVersion</code> attribute is declared, its value
375must be less than or equal to the system's API Level integer. If not declared,
376the system assumes that the application requires API Level 1. </li>
377<li>If a <code>android:maxSdkVersion</code> attribute is declared, its value
378must be equal to or greater than the system's API Level integer.
379If not declared, the system assumes that the application
380has no maximum API Level. Please read the <a
381href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
382documentation for more information about how the system handles this attribute.</li>
383</ul>
384
385<p>When declared in an application's manifest, a <code>&lt;uses-sdk&gt;</code>
386element might look like this: </p>
387
388<pre>&lt;manifest&gt;
389  &lt;uses-sdk android:minSdkVersion="5" /&gt;
390  ...
391&lt;/manifest&gt;</pre>
392
393<p>The principal reason that an application would declare an API Level in
394<code>android:minSdkVersion</code> is to tell the Android system that it is
395using APIs that were <em>introduced</em> in the API Level specified. If the
396application were to be somehow installed on a platform with a lower API Level,
397then it would crash at run-time when it tried to access APIs that don't exist.
398The system prevents such an outcome by not allowing the application to be
399installed if the lowest API Level it requires is higher than that of the
400platform version on the target device.</p>
401
402<p>For example, the {@link android.appwidget} package was introduced with API
403Level 3. If an application uses that API, it must declare a
404<code>android:minSdkVersion</code> attribute with a value of "3". The
405application will then be installable on platforms such as Android 1.5 (API Level
4063) and Android 1.6 (API Level 4), but not on the Android 1.1 (API Level 2) and
407Android 1.0 platforms (API Level 1).</p>
408
409<p>For more information about how to specify an application's API Level
410requirements, see the <a
411href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
412 section of the manifest file documentation.</p>
413
414
415<h2 id="considerations">Development Considerations</h2>
416
417<p>The sections below provide information related to API level that you should
418consider when developing your application.</p>
419
420<h3 id="fc">Application forward compatibility</h3>
421
422<p>Android applications are generally forward-compatible with new versions of
423the Android platform.</p>
424
425<p>Because almost all changes to the framework API are additive, an Android
426application developed using any given version of the API (as specified by its
427API Level) is forward-compatible with later versions of the Android platform and
428higher API levels. The application should be able to run on all later versions
429of the Android platform, except in isolated cases where the application uses a
430part of the API that is later removed for some reason. </p>
431
432<p>Forward compatibility is important because many Android-powered devices
433receive over-the-air (OTA) system updates. The user may install your
434application and use it successfully, then later receive an OTA update to a new
435version of the Android platform. Once the update is installed, your application
436will run in a new run-time version of the environment, but one that has the API
437and system capabilities that your application depends on. </p>
438
439<p>In some cases, changes <em>below</em> the API, such those in the underlying
440system itself, may affect your application when it is run in the new
441environment. For that reason it's important for you, as the application
442developer, to understand how the application will look and behave in each system
443environment. To help you test your application on various versions of the Android
444platform, the Android SDK includes multiple platforms that you can download.
445Each platform includes a compatible system image that you can run in an AVD, to
446test your application. </p>
447
448<h3 id="bc">Application backward compatibility</h3>
449
450<p>Android applications are not necessarily backward compatible with versions of
451the Android platform older than the version against which they were compiled.
452</p>
453
454<p>Each new version of the Android platform can include new framework APIs, such
455as those that give applications access to new platform capabilities or replace
456existing API parts. The new APIs are accessible to applications when running on
457the new platform and, as mentioned above, also when running on later versions of
458the platform, as specified by API Level. Conversely, because earlier versions of
459the platform do not include the new APIs, applications that use the new APIs are
460unable to run on those platforms.</p>
461
462<p>Although it's unlikely that an Android-powered device would be downgraded to
463a previous version of the platform, it's important to realize that there are
464likely to be many devices in the field that run earlier versions of the
465platform. Even among devices that receive OTA updates, some might lag and
466might not receive an update for a significant amount of time. </p>
467
468<h3 id="platform">Selecting a platform version and API Level</h3>
469
470<p>When you are developing your application, you will need to choose
471the platform version against which you will compile the application. In
472general, you should compile your application against the lowest possible
473version of the platform that your application can support.
474
475<p>You can determine the lowest possible platform version by compiling the
476application against successively lower build targets. After you determine the
477lowest version, you should create an AVD using the corresponding platform
478version (and API Level) and fully test your application. Make sure to declare a
479<code>android:minSdkVersion</code> attribute in the application's manifest and
480set its value to the API Level of the platform version. </p>
481
482<h3 id="apilevel">Declaring a minimum API Level</h3>
483
484<p>If you build an application that uses APIs or system features introduced in
485the latest platform version, you should set the
486<code>android:minSdkVersion</code> attribute to the API Level of the latest
487platform version. This ensures that users will only be able to install your
488application if their devices are running a compatible version of the Android
489platform. In turn, this ensures that your application can function properly on
490their devices. </p>
491
492<p>If your application uses APIs introduced in the latest platform version but
493does <em>not</em> declare a <code>android:minSdkVersion</code> attribute, then
494it will run properly on devices running the latest version of the platform, but
495<em>not</em> on devices running earlier versions of the platform. In the latter
496case, the application will crash at runtime when it tries to use APIs that don't
497exist on the earlier versions.</p>
498
499<h3 id="testing">Testing against higher API Levels</h3>
500
501<p>After compiling your application, you should make sure to test it on the
502platform specified in the application's <code>android:minSdkVersion</code>
503attribute. To do so, create an AVD that uses the platform version required by
504your application. Additionally, to ensure forward-compatibility, you should run
505and test the application on all platforms that use a higher API Level than that
506used by your application. </p>
507
508<p>The Android SDK includes multiple platform versions that you can use,
509including the latest version, and provides an updater tool that you can use to
510download other platform versions as necessary. </p>
511
512<p>To access the updater, use the <code>android</code> command-line tool,
513located in the &lt;sdk&gt;/tools directory. You can launch the SDK updater by
514executing <code>android sdk</code>. You can
515also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
516In ADT, you can also access the updater by selecting
517<strong>Window</strong>&nbsp;>&nbsp;<strong>Android SDK
518Manager</strong>.</p>
519
520<p>To run your application against different platform versions in the emulator,
521create an AVD for each platform version that you want to test. For more
522information about AVDs, see <a
523href="{@docRoot}tools/devices/index.html">Creating and Managing Virtual Devices</a>. If
524you are using a physical device for testing, ensure that you know the API Level
525of the Android platform it runs. See the table at the top of this document for
526a list of platform versions and their API Levels. </p>
527
528<h2 id="provisional">Using a Provisional API Level</h2>
529
530<p>In some cases, an "Early Look" Android SDK platform may be available. To let
531you begin developing on the platform although the APIs may not be final, the
532platform's API Level integer will not be specified. You must instead use the
533platform's <em>provisional API Level</em> in your application manifest, in order
534to build applications against the platform. A provisional API Level is not an
535integer, but a string matching the codename of the unreleased platform version.
536The provisional API Level will be specified in the release notes for the Early
537Look SDK release notes and is case-sensitive.</p>
538
539<p>The use of a provisional API Level is designed to protect developers and
540device users from inadvertently publishing or installing applications based on
541the Early Look framework API, which may not run properly on actual devices
542running the final system image.</p>
543
544<p>The provisional API Level will only be valid while using the Early Look SDK
545and can only be used to run applications in the emulator. An application using
546the provisional API Level can never be installed on an Android device. At the
547final release of the platform, you must replace any instances of the provisional
548API Level in your application manifest with the final platform's actual API
549Level integer.</p>
550
551
552<h2 id="filtering">Filtering the Reference Documentation by API Level</h2>
553
554<p>Reference documentation pages on the Android Developers site offer a "Filter
555by API Level" control in the top-right area of each page. You can use the
556control to show documentation only for parts of the API that are actually
557accessible to your application, based on the API Level that it specifies in
558the <code>android:minSdkVersion</code> attribute of its manifest file. </p>
559
560<p>To use filtering, select the checkbox to enable filtering, just below the
561page search box. Then set the "Filter by API Level" control to the same API
562Level as specified by your application. Notice that APIs introduced in a later
563API Level are then grayed out and their content is masked, since they would not
564be accessible to your application. </p>
565
566<p>Filtering by API Level in the documentation does not provide a view
567of what is new or introduced in each API Level &mdash; it simply provides a way
568to view the entire API associated with a given API Level, while excluding API
569elements introduced in later API Levels.</p>
570
571<p>If you decide that you don't want to filter the API documentation, just
572disable the feature using the checkbox. By default, API Level filtering is
573disabled, so that you can view the full framework API, regardless of API Level.
574</p>
575
576<p>Also note that the reference documentation for individual API elements
577specifies the API Level at which each element was introduced. The API Level
578for packages and classes is specified as "Since &lt;api level&gt;" at the
579top-right corner of the content area on each documentation page. The API Level
580for class members is specified in their detailed description headers,
581at the right margin. </p>
582
583
584
585
586
587
588
589
590
591