19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpage.title=<uses-sdk>
22a1b706ec11e53689a2f86cc8e558e74591b462aScott Mainparent.title=The AndroidManifest.xml File
32a1b706ec11e53689a2f86cc8e558e74591b462aScott Mainparent.link=manifest-intro.html
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project@jd:body
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<div id="qv-wrapper">
850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<div id="qv">
950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
1050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h2>In this document</h2>
1150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<ol>
1250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <li><a href="#ApiLevels">What is API Level?</a></li>
1350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <li><a href="#uses">Uses of API Level in Android</a></li>
1450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <li><a href="#considerations">Development Considerations</a>
1550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <ol>
1650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main      <li><a href="#fc">Application forward compatibility</a></li>
1750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main      <li><a href="#bc">Application backward compatibility</a></li>
1850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main      <li><a href="#platform">Selecting a platform version and API Level</a></li>
1950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main      <li><a href="#apilevel">Declaring a minimum API Level</a></li>
2050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main      <li><a href="#testing">Testing against higher API Levels</a></li>
2150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    </ol>
2250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  </li>
2350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <li><a href="#provisional">Using a Provisional API Level</a></li>
2450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <li><a href="#filtering">Filtering the Reference Documentation by API Level</a></li>
2550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</ol>
2650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</div>
2750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</div>
2850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dl class="xml">
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dt>syntax:</dt>
314e60d012c95f50ddd2a1ba6202e4fec3c9cfd3dfScott Main<dd><pre>
324e60d012c95f50ddd2a1ba6202e4fec3c9cfd3dfScott Main&lt;uses-sdk android:<a href="#min">minSdkVersion</a>="<i>integer</i>" 
337500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty          android:<a href="#target">targetSdkVersion</a>="<i>integer</i>"
347500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty          android:<a href="#max">maxSdkVersion</a>="<i>integer</i>" /&gt;</pre></dd>
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dt>contained in:</dt>
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code></dd>
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<dt>description:</dt>
40135d2335409d8bf23f7391078c0c09038815ab39Scott Main<dd>Lets you express an application's compatibility with one or more versions of the Android platform,
41135d2335409d8bf23f7391078c0c09038815ab39Scott Mainby means of an API Level integer. The API Level expressed by an application will be compared to the
4271d4b289a7a934ecd16c3036b812d40db6d3a74dScott MainAPI Level of a given Android system, which may vary among different Android devices.
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</p>
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
457500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty<p>Despite its name, this element is used to specify the API Level, <em>not</em>
467500f341dd65de97ac4272e7a9c5474423cef89fDirk Doughertythe version number of the SDK (software development kit) or Android platform. 
477500f341dd65de97ac4272e7a9c5474423cef89fDirk DoughertyThe API Level is always a single integer. You cannot derive the API Level from
487500f341dd65de97ac4272e7a9c5474423cef89fDirk Doughertyits associated Android version number (for example, it is not the same as the
497500f341dd65de97ac4272e7a9c5474423cef89fDirk Doughertymajor version or the sum of the major and minor versions).</p>
5071d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main
5150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Also read the document about
5250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a>.
5371d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main</p></dd> 
5471d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main
557500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty <div class="sidebox-wrapper" xstyle="margin-bottom:2em;margin-top:.5em;width:90%;"> 
567500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <img id="rule" src="{@docRoot}assets/images/grad-rule-qv.png"> 
577500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <div id="qv-sub-rule"> 
584d7bc65538c7cd9fbb1fbbcf22d1da47fcee1219Dirk Dougherty    <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;"> 
594d7bc65538c7cd9fbb1fbbcf22d1da47fcee1219Dirk Dougherty    <p style="color:#669999;padding-top:1em;">Google Play and &lt;uses-sdk&gt; attributes</p> 
604d7bc65538c7cd9fbb1fbbcf22d1da47fcee1219Dirk Dougherty    <p style="padding-top:1em;">Google Play filters the applications that are visible to users, so
617500f341dd65de97ac4272e7a9c5474423cef89fDirk Doughertythat users can only see and download applications that are compatible with their
624d7bc65538c7cd9fbb1fbbcf22d1da47fcee1219Dirk Doughertydevices. One of the ways it filters applications is by Android
634d7bc65538c7cd9fbb1fbbcf22d1da47fcee1219Dirk Doughertyversion-compatibility. To do this, Google Play checks the <code>&lt;uses-sdk&gt;</code>
647500f341dd65de97ac4272e7a9c5474423cef89fDirk Doughertyattributes in each application's manifest to establish its version-compatibility
657500f341dd65de97ac4272e7a9c5474423cef89fDirk Doughertyrange, then shows or hides the application based on a comparison with the API
665305627d5b78b8d63ce344c4eb5d1a28ef44d3d0Dirk DoughertyLevel of the user's Android system version. For more information, see <a
6750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainhref="{@docRoot}guide/google/play/filters.html">Filters on Google Play</a>.</p>
687500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  </div>
697500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty</div>
70135d2335409d8bf23f7391078c0c09038815ab39Scott Main
7171d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main<dt>attributes:</dt>
72135d2335409d8bf23f7391078c0c09038815ab39Scott Main
7371d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main<dd>
7471d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main<dl class="attr">
7571d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main  <dt><a name="min"></a>{@code android:minSdkVersion}</dt>
76d56760ce1ecb949a258e1c667eb46446e2575269Scott Main  <dd>An integer designating the minimum API Level required
77d56760ce1ecb949a258e1c667eb46446e2575269Scott Main  for the application to run. The Android system will prevent the user from installing
78d56760ce1ecb949a258e1c667eb46446e2575269Scott Main  the application if the system's API Level is lower than the value specified in
79d56760ce1ecb949a258e1c667eb46446e2575269Scott Main  this attribute. You should always declare this attribute.
807500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
817500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <p class="caution"><strong>Caution:</strong> If you do not declare this
827500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  attribute, the system assumes a default value of "1", which indicates that your
837500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  application is compatible with all versions of Android. If your application is
847500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <em>not</em> compatible with all versions (for instance, it uses APIs introduced
85d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  in API Level 3) and you have not declared the proper <code>minSdkVersion</code>,
867500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  then when installed on a system with an API Level less than 3, the application
877500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  will crash during runtime when attempting to access the unavailable APIs. For
887500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  this reason, be certain to declare the appropriate API Level in the
897500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <code>minSdkVersion</code> attribute.</p>
9071d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main  </dd>
917500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
9271d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main  <dt><a name="target"></a>{@code android:targetSdkVersion}</dt>
93d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  <dd>An integer designating the API Level that the application targets. If not set, the default
94d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainvalue equals that given to {@code minSdkVersion}.
95d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main
96d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  <p>This attribute informs the system that you have tested against the target version and the
97d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainsystem should not enable any compatibility behaviors to maintain your app's forward-compatibility
98d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainwith the target version. The application is still able to run on older versions (down to {@code
99d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott MainminSdkVersion}).</p>
100d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main
101d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  <p>As Android evolves with each new version, some behaviors and even appearances might change.
102d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott MainHowever, if the API level of the platform is higher than the version declared by your app's {@code
103d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott MaintargetSdkVersion}, the system may enable compatibility behaviors to ensure that your app
104d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Maincontinues to work the way you expect. You can disable such compatibility
105d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainbehaviors by specifying {@code targetSdkVersion} to match the API
106d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainlevel of the platform on which it's running. For example, setting this value to "11" or higher
107d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainallows the system to apply a new default theme (Holo) to your app when running on Android 3.0 or
108d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainhigher and also disables <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
109d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Maincompatibility mode</a> when running on larger screens (because support for API level 11 implicitly
110d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainsupports larger screens).</p>
111d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main
112d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  <p>There are many compatibility behaviors that the system may enable based on the value you set
113d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainfor this attribute. Several of these behaviors are described by the corresponding platform versions
114d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainin the {@link android.os.Build.VERSION_CODES} reference.</p>
115d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main
116d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  <p>To maintain your application along with each Android release, you should increase
117d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainthe value of this attribute to match the latest API level, then thoroughly test your application on
118d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainthe corresponding platform version.</p>
1197500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
12071d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main  <p>Introduced in: API Level 4</p>
12171d4b289a7a934ecd16c3036b812d40db6d3a74dScott Main  </dd>
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1237500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <dt><a name="max"></a>{@code android:maxSdkVersion}</dt>
1247500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <dd>An integer designating the maximum API Level on which the application is 
1257500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  designed to run. 
1267500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
1277500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <p>In Android 1.5, 1.6, 2.0, and 2.0.1, the system checks the value of this
128d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  attribute when installing an application and when re-validating the application
1297500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  after a system update. In either case, if the application's
130d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  <code>maxSdkVersion</code> attribute is lower than the API Level used by
1317500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  the system itself, then the system will not allow the application to be
132d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  installed. In the case of re-validation after system update, this effectively
1337500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  removes your application from the device.
1347500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
1357500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <p>To illustrate how this attribute can affect your application after system
1367500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  updates, consider the following example: </p>
1377500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
138d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  <p>An application declaring <code>maxSdkVersion="5"</code> in its
1394d7bc65538c7cd9fbb1fbbcf22d1da47fcee1219Dirk Dougherty  manifest is published on Google Play. A user whose device is running Android
1407500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  1.6 (API Level 4) downloads and installs the app. After a few weeks, the user
1417500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  receives an over-the-air system update to Android 2.0 (API Level 5). After the
1427500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  update is installed, the system checks the application's
143d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  <code>maxSdkVersion</code> and successfully re-validates it. The
1447500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  application functions as normal. However, some time later, the device receives
1457500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  another system update, this time to Android 2.0.1 (API Level 6). After the
146d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  update, the system can no longer re-validate the application because the system's
1477500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  own API Level (6) is now higher than the maximum supported by the application
1487500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  (5). The system prevents the application from being visible to the user, in
1497500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  effect removing it from the device.</p>
1507500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
1517500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <p class="warning"><strong>Warning:</strong> Declaring this attribute is not
1527500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  recommended. First, there is no need to set the attribute as means of blocking
1537500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  deployment of your application onto new versions of the Android platform as they
1547500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  are released. By design, new versions of the platform are fully
1557500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  backward-compatible. Your application should work properly on new versions,
1567500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  provided it uses only standard APIs and follows development best practices.
1577500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  Second, note that in some cases, declaring the attribute can <strong>result in
1587500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  your application being removed from users' devices after a system
159d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Main  update</strong> to a higher API Level. Most devices on which your application
1607500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  is likely to be installed will receive periodic system updates over the air, so
1617500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  you should consider their effect on your application before setting this
1627500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  attribute.</p>
1637500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
1647500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <p style="margin-bottom:1em;">Introduced in: API Level 4</p>
1657500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
1667500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  <div class="special">Future versions of Android (beyond Android 2.0.1) will no
167d4eb682b5fa06f476d6f091b7df1213e7f1e07f8Scott Mainlonger check or enforce the <code>maxSdkVersion</code> attribute during
1684d7bc65538c7cd9fbb1fbbcf22d1da47fcee1219Dirk Doughertyinstallation or re-validation. Google Play will continue to use the attribute
1697500f341dd65de97ac4272e7a9c5474423cef89fDirk Doughertyas a filter, however, when presenting users with applications available for
1707500f341dd65de97ac4272e7a9c5474423cef89fDirk Doughertydownload. </div>
1717500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  </dd>
1727500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty  
1737500f341dd65de97ac4272e7a9c5474423cef89fDirk Dougherty
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</dl></dd>
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
176dc52312ce3f9c7bd306c58264f82d6eb7ccd661aDirk Dougherty<!-- ##api level indication## -->
177dc52312ce3f9c7bd306c58264f82d6eb7ccd661aDirk Dougherty<dt>introduced in:</dt>
178dc52312ce3f9c7bd306c58264f82d6eb7ccd661aDirk Dougherty<dd>API Level 1</dd>
179dc52312ce3f9c7bd306c58264f82d6eb7ccd661aDirk Dougherty
180dc52312ce3f9c7bd306c58264f82d6eb7ccd661aDirk Dougherty</dl>
18150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
18250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
18350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
18450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
18550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
18650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<!--- CONTENT FROM OLD API LEVEL DOC ---->
18750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
18850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
18950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
19050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
19150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h2 id="ApiLevels">What is API Level?</h2>
19250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
19350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>API Level is an integer value that uniquely identifies the framework API
19450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainrevision offered by a version of the Android platform.</p>
19550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
19650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>The Android platform provides a framework API that applications can use to
19750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maininteract with the underlying Android system. The framework API consists of:</p>
19850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
19950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<ul>
20050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>A core set of packages and classes</li>
20150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>A set of XML elements and attributes for declaring a manifest file</li>
20250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>A set of XML elements and attributes for declaring and accessing resources</li>
20350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>A set of Intents</li>
20450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>A set of permissions that applications can request, as well as permission
20550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainenforcements included in the system</li>
20650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</ul>
20750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
20850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Each successive version of the Android platform can include updates to the
20950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainAndroid application framework API that it delivers. </p>
21050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
21150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Updates to the framework API are designed so that the new API remains
21250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maincompatible with earlier versions of the API. That is, most changes in the API
21350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainare additive and introduce new or replacement functionality. As parts of the API
21450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainare upgraded, the older replaced parts are deprecated but are not removed, so
21550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthat existing applications can still use them. In a very small number of cases,
21650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainparts of the API may be modified or removed, although typically such changes are
21750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainonly needed to ensure API robustness and application or system security. All
21850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainother API parts from earlier revisions are carried forward without
21950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainmodification.</p>
22050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
22150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>The framework API that an Android platform delivers is specified using an
22250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maininteger identifier called "API Level". Each Android platform version supports
22350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainexactly one API Level, although support is implicit for all earlier API Levels
22450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main(down to API Level 1). The initial release of the Android platform provided 
22550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainAPI Level 1 and subsequent releases have incremented the API Level.</p>
22650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
22750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>The following table specifies the API Level supported by each version of the
22850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainAndroid platform.</p>
22950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
23050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<table>
23150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><th>Platform Version</th><th>API Level</th><th>VERSION_CODE</th><th>Notes</th></tr>
23250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main 
233cd940ef36c417f43ff8b2042abd88d6709138649Joe Fernandez    <tr><td><a href="{@docRoot}about/versions/android-4.1.html">Android 4.1, 4.1.1</a></td>
234cd940ef36c417f43ff8b2042abd88d6709138649Joe Fernandez    <td><a href="{@docRoot}sdk/api_diff/16/changes.html" title="Diff Report">16</a></td>
235cd940ef36c417f43ff8b2042abd88d6709138649Joe Fernandez    <td>{@link android.os.Build.VERSION_CODES#JELLY_BEAN}</td>
236cd940ef36c417f43ff8b2042abd88d6709138649Joe Fernandez    <td><a href="{@docRoot}about/versions/jelly-bean.html">Platform
237cd940ef36c417f43ff8b2042abd88d6709138649Joe FernandezHighlights</a></td></tr>
238cd940ef36c417f43ff8b2042abd88d6709138649Joe Fernandez
239cd940ef36c417f43ff8b2042abd88d6709138649Joe Fernandez    <tr><td><a href="{@docRoot}about/versions/android-4.0.3.html">Android 4.0.3, 4.0.4</a></td>
24050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/15/changes.html" title="Diff Report">15</a></td>
24150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1}</td>
24250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td rowspan="2"><a href="{@docRoot}about/versions/android-4.0-highlights.html">Platform
24350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainHighlights</a></td></tr>
24450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
24550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <tr><td><a href="{@docRoot}about/versions/android-4.0.html">Android 4.0, 4.0.1, 4.0.2</a></td>
24650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/14/changes.html" title="Diff Report">14</a></td>
24750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}</td>
24850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    </tr>
24950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  
25050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <tr><td><a href="{@docRoot}about/versions/android-3.2.html">Android 3.2</a></td>
25150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/13/changes.html" title="Diff Report">13</a></td>
25250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}</td>
25350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><!-- <a href="{@docRoot}about/versions/android-3.2-highlights.html">Platform
25450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainHighlights</a>--></td></tr>
25550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  
25650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-3.1.html">Android 3.1.x</a></td>
25750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/12/changes.html" title="Diff Report">12</a></td>
25850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR1}</td>
25950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}about/versions/android-3.1-highlights.html">Platform Highlights</a></td></tr>
26050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    
26150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-3.0.html">Android 3.0.x</td>
26250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/11/changes.html" title="Diff Report">11</a></td>
26350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB}</td>
26450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}about/versions/android-3.0-highlights.html">Platform Highlights</a></td></tr>
26550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    
26650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-2.3.3.html">Android 2.3.4<br>Android 2.3.3</td>
26750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/10/changes.html" title="Diff Report">10</a></td>
26850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1}</td>
26950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td rowspan="2"><a href="{@docRoot}about/versions/android-2.3-highlights.html">Platform
27050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainHighlights</a></td></tr>
27150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  
27250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-2.3.html">Android 2.3.2<br>Android 2.3.1<br>Android
27350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main2.3</td>
27450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/9/changes.html" title="Diff Report">9</a></td>
27550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD}</td>
27650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    </tr>
27750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  
27850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-2.2.html">Android 2.2.x</td>
27950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td ><a href="{@docRoot}sdk/api_diff/8/changes.html" title="Diff Report">8</a></td>
28050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#FROYO}</td>
28150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}about/versions/android-2.2-highlights.html">Platform Highlights</a></td></tr>
28250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  
28350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-2.1.html">Android 2.1.x</td>
28450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/7/changes.html" title="Diff Report">7</a></td>
28550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_MR1}</td>
28650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td rowspan="3" ><a href="{@docRoot}about/versions/android-2.0-highlights.html">Platform
28750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainHighlights</a></td></tr>
28850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    
28950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-2.0.1.html">Android 2.0.1</td>
29050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/6/changes.html" title="Diff Report">6</a></td>
29150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_0_1}</td>
29250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    </tr>
29350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    
29450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-2.0.html">Android 2.0</td>
29550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/5/changes.html" title="Diff Report">5</a></td>
29650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#ECLAIR}</td>
29750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    </tr>
29850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    
29950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-1.6.html">Android 1.6</td>
30050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/4/changes.html" title="Diff Report">4</a></td>
30150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#DONUT}</td>
30250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}about/versions/android-1.6-highlights.html">Platform Highlights</a></td></tr>
30350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    
30450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-1.5.html">Android 1.5</td>
30550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}sdk/api_diff/3/changes.html" title="Diff Report">3</a></td>
30650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#CUPCAKE}</td>
30750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td><a href="{@docRoot}about/versions/android-1.5-highlights.html">Platform Highlights</a></td></tr>
30850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    
30950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td><a href="{@docRoot}about/versions/android-1.1.html">Android 1.1</td>
31050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>2</td>
31150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#BASE_1_1}</td><td></td></tr>
31250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    
31350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  <tr><td>Android 1.0</td>
31450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>1</td>
31550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td>{@link android.os.Build.VERSION_CODES#BASE}</td>
31650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main    <td></td></tr>
31750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</table>
31850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
31950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
32050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h2 id="uses">Uses of API Level in Android</h2>
32150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
32250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>The API Level identifier serves a key role in ensuring the best possible
32350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainexperience for users and application developers: 
32450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
32550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<ul>
32650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>It lets the Android platform describe the maximum framework API revision 
32750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthat it supports</li>
32850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>It lets applications describe the framework API revision that they
32950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainrequire</li>
33050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>It lets the system negotiate the installation of applications on the user's
33150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maindevice, such that version-incompatible applications are not installed.</li>
33250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</ul>
33350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
33450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Each Android platform version stores its API Level identifier internally, in
33550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe Android system itself. </p>
33650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
33750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Applications can use a manifest element provided by the framework API &mdash;
33850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<code>&lt;uses-sdk&gt;</code> &mdash; to describe the minimum and maximum API
33950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainLevels under which they are able to run, as well as the preferred API Level that
34050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthey are designed to support. The element offers three key attributes:</p>
34150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
34250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<ul>
34350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li><code>android:minSdkVersion</code> &mdash; Specifies the minimum API Level
34450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainon which the application is able to run. The default value is "1".</li>
34550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
34650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainon which the application is designed to run. In some cases, this allows the
34750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainapplication to use manifest elements or behaviors defined in the target
34850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainAPI Level, rather than being restricted to using only those defined 
34950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainfor the minimum API Level.</li>
35050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li><code>android:maxSdkVersion</code> &mdash; Specifies the maximum API Level
35150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainon which the application is able to run. <strong>Important:</strong> Please read the <a
35250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainhref="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
35350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maindocumentation before using this attribute.  </li>
35450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</ul>
35550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
35650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>For example, to specify the minimum system API Level that an application
35750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainrequires in order to run, the application would include in its manifest a
35850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<code>&lt;uses-sdk&gt;</code> element with a <code>android:minSdkVersion</code>
35950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainattribute. The value of <code>android:minSdkVersion</code> would be the integer
36050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maincorresponding to the API Level of the earliest version of the Android platform
36150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainunder which the application can run. </p>
36250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
36350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>When the user attempts to install an application, or when revalidating an
36450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainappplication after a system update, the Android system first checks the
36550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<code>&lt;uses-sdk&gt;</code> attributes in the application's manifest and
36650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maincompares the values against its own internal API Level. The system allows the
36750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maininstallation to begin only if these conditions are met:</p>
36850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
36950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<ul>
37050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>If a <code>android:minSdkVersion</code> attribute is declared, its value
37150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainmust be less than or equal to the system's API Level integer. If not declared,
37250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe system assumes that the application requires API Level 1. </li>
37350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<li>If a <code>android:maxSdkVersion</code> attribute is declared, its value
37450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainmust be equal to or greater than the system's API Level integer. 
37550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainIf not declared, the system assumes that the application
37650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainhas no maximum API Level. Please read the <a
37750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainhref="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
37850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maindocumentation for more information about how the system handles this attribute.</li>
37950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</ul>
38050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
38150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>When declared in an application's manifest, a <code>&lt;uses-sdk&gt;</code>
38250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainelement might look like this: </p>
38350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
38450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<pre>&lt;manifest&gt;
38550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  &lt;uses-sdk android:minSdkVersion="5" /&gt;
38650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main  ...
38750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main&lt;/manifest&gt;</pre>
38850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
38950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>The principal reason that an application would declare an API Level in
39050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<code>android:minSdkVersion</code> is to tell the Android system that it is
39150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainusing APIs that were <em>introduced</em> in the API Level specified. If the
39250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainapplication were to be somehow installed on a platform with a lower API Level,
39350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthen it would crash at run-time when it tried to access APIs that don't exist.
39450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainThe system prevents such an outcome by not allowing the application to be
39550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maininstalled if the lowest API Level it requires is higher than that of the
39650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainplatform version on the target device.</p>
39750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
39850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>For example, the {@link android.appwidget} package was introduced with API
39950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainLevel 3. If an application uses that API, it must declare a
40050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<code>android:minSdkVersion</code> attribute with a value of "3". The
40150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainapplication will then be installable on platforms such as Android 1.5 (API Level
40250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main3) and Android 1.6 (API Level 4), but not on the Android 1.1 (API Level 2) and
40350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainAndroid 1.0 platforms (API Level 1).</p>
40450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
40550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>For more information about how to specify an application's API Level
40650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainrequirements, see the <a
40750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainhref="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
40850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main section of the manifest file documentation.</p>
40950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
41050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
41150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h2 id="considerations">Development Considerations</h2>
41250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
41350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>The sections below provide information related to API level that you should
41450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainconsider when developing your application.</p>
41550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
41650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h3 id="fc">Application forward compatibility</h3>
41750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
41850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Android applications are generally forward-compatible with new versions of
41950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe Android platform.</p>
42050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
42150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Because almost all changes to the framework API are additive, an Android
42250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainapplication developed using any given version of the API (as specified by its
42350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainAPI Level) is forward-compatible with later versions of the Android platform and
42450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainhigher API levels. The application should be able to run on all later versions
42550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainof the Android platform, except in isolated cases where the application uses a
42650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainpart of the API that is later removed for some reason. </p>
42750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
42850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Forward compatibility is important because many Android-powered devices
42950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainreceive over-the-air (OTA) system updates. The user may install your
43050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainapplication and use it successfully, then later receive an OTA update to a new
43150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainversion of the Android platform. Once the update is installed, your application
43250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainwill run in a new run-time version of the environment, but one that has the API
43350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainand system capabilities that your application depends on. </p>
43450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
43550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>In some cases, changes <em>below</em> the API, such those in the underlying
43650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainsystem itself, may affect your application when it is run in the new
43750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainenvironment. For that reason it's important for you, as the application
43850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maindeveloper, to understand how the application will look and behave in each system
43950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainenvironment. To help you test your application on various versions of the Android
44050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainplatform, the Android SDK includes multiple platforms that you can download.
44150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainEach platform includes a compatible system image that you can run in an AVD, to
44250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maintest your application. </p>
44350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
44450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h3 id="bc">Application backward compatibility</h3>
44550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
44650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Android applications are not necessarily backward compatible with versions of
44750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe Android platform older than the version against which they were compiled.
44850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</p>
44950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
45050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Each new version of the Android platform can include new framework APIs, such
45150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainas those that give applications access to new platform capabilities or replace
45250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainexisting API parts. The new APIs are accessible to applications when running on
45350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe new platform and, as mentioned above, also when running on later versions of
45450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe platform, as specified by API Level. Conversely, because earlier versions of
45550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe platform do not include the new APIs, applications that use the new APIs are
45650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainunable to run on those platforms.</p>
45750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
45850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Although it's unlikely that an Android-powered device would be downgraded to
45950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maina previous version of the platform, it's important to realize that there are
46050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainlikely to be many devices in the field that run earlier versions of the
46150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainplatform. Even among devices that receive OTA updates, some might lag and
46250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainmight not receive an update for a significant amount of time. </p>
46350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
46450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h3 id="platform">Selecting a platform version and API Level</h3>
46550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
46650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>When you are developing your application, you will need to choose
46750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe platform version against which you will compile the application. In
46850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maingeneral, you should compile your application against the lowest possible
46950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainversion of the platform that your application can support. 
47050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
47150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>You can determine the lowest possible platform version by compiling the
47250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainapplication against successively lower build targets. After you determine the
47350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainlowest version, you should create an AVD using the corresponding platform
47450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainversion (and API Level) and fully test your application. Make sure to declare a
47550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<code>android:minSdkVersion</code> attribute in the application's manifest and
47650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainset its value to the API Level of the platform version. </p>
47750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
47850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h3 id="apilevel">Declaring a minimum API Level</h3>
47950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
48050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>If you build an application that uses APIs or system features introduced in
48150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe latest platform version, you should set the
48250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<code>android:minSdkVersion</code> attribute to the API Level of the latest
48350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainplatform version. This ensures that users will only be able to install your
48450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainapplication if their devices are running a compatible version of the Android
48550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainplatform. In turn, this ensures that your application can function properly on
48650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maintheir devices. </p>
48750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
48850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>If your application uses APIs introduced in the latest platform version but
48950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maindoes <em>not</em> declare a <code>android:minSdkVersion</code> attribute, then
49050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainit will run properly on devices running the latest version of the platform, but
49150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<em>not</em> on devices running earlier versions of the platform. In the latter
49250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maincase, the application will crash at runtime when it tries to use APIs that don't
49350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainexist on the earlier versions.</p>
49450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
49550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h3 id="testing">Testing against higher API Levels</h3>
49650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
49750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>After compiling your application, you should make sure to test it on the
49850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainplatform specified in the application's <code>android:minSdkVersion</code>
49950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainattribute. To do so, create an AVD that uses the platform version required by
50050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainyour application. Additionally, to ensure forward-compatibility, you should run
50150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainand test the application on all platforms that use a higher API Level than that
50250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainused by your application. </p>
50350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
50450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>The Android SDK includes multiple platform versions that you can use,
50550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainincluding the latest version, and provides an updater tool that you can use to
50650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maindownload other platform versions as necessary. </p>
50750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
50850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>To access the updater, use the <code>android</code> command-line tool,
50950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainlocated in the &lt;sdk&gt;/tools directory. You can launch the SDK updater by
51050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainexecuting <code>android sdk</code>. You can
51150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainalso simply double-click the android.bat (Windows) or android (OS X/Linux) file.
51250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainIn ADT, you can also access the updater by selecting 
51350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<strong>Window</strong>&nbsp;>&nbsp;<strong>Android SDK
51450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainManager</strong>.</p>
51550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
51650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>To run your application against different platform versions in the emulator,
51750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maincreate an AVD for each platform version that you want to test. For more
51850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maininformation about AVDs, see <a
51950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainhref="{@docRoot}tools/devices/index.html">Creating and Managing Virtual Devices</a>. If
52050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainyou are using a physical device for testing, ensure that you know the API Level
52150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainof the Android platform it runs. See the table at the top of this document for
52250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maina list of platform versions and their API Levels. </p>
52350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
52450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h2 id="provisional">Using a Provisional API Level</h2>
52550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
52650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>In some cases, an "Early Look" Android SDK platform may be available. To let
52750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainyou begin developing on the platform although the APIs may not be final, the
52850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainplatform's API Level integer will not be specified. You must instead use the
52950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainplatform's <em>provisional API Level</em> in your application manifest, in order
53050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainto build applications against the platform. A provisional API Level is not an
53150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maininteger, but a string matching the codename of the unreleased platform version.
53250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainThe provisional API Level will be specified in the release notes for the Early
53350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainLook SDK release notes and is case-sensitive.</p>
53450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
53550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>The use of a provisional API Level is designed to protect developers and
53650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maindevice users from inadvertently publishing or installing applications based on
53750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe Early Look framework API, which may not run properly on actual devices
53850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainrunning the final system image.</p>
53950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
54050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>The provisional API Level will only be valid while using the Early Look SDK
54150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainand can only be used to run applications in the emulator. An application using
54250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe provisional API Level can never be installed on an Android device. At the
54350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainfinal release of the platform, you must replace any instances of the provisional
54450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainAPI Level in your application manifest with the final platform's actual API
54550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainLevel integer.</p>
54650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
54750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
54850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<h2 id="filtering">Filtering the Reference Documentation by API Level</h2>
54950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
55050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Reference documentation pages on the Android Developers site offer a "Filter
55150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainby API Level" control in the top-right area of each page. You can use the 
55250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maincontrol to show documentation only for parts of the API that are actually 
55350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainaccessible to your application, based on the API Level that it specifies in 
55450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainthe <code>android:minSdkVersion</code> attribute of its manifest file. </p>
55550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
55650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>To use filtering, select the checkbox to enable filtering, just below the
55750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainpage search box. Then set the "Filter by API Level" control to the same API
55850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainLevel as specified by your application. Notice that APIs introduced in a later
55950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott MainAPI Level are then grayed out and their content is masked, since they would not
56050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainbe accessible to your application. </p>
56150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
56250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Filtering by API Level in the documentation does not provide a view
56350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainof what is new or introduced in each API Level &mdash; it simply provides a way
56450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainto view the entire API associated with a given API Level, while excluding API
56550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainelements introduced in later API Levels.</p>
56650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
56750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>If you decide that you don't want to filter the API documentation, just
56850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maindisable the feature using the checkbox. By default, API Level filtering is
56950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maindisabled, so that you can view the full framework API, regardless of API Level.
57050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main</p>
57150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
57250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main<p>Also note that the reference documentation for individual API elements
57350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainspecifies the API Level at which each element was introduced. The API Level 
57450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainfor packages and classes is specified as "Since &lt;api level&gt;" at the 
57550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Maintop-right corner of the content area on each documentation page. The API Level 
57650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainfor class members is specified in their detailed description headers, 
57750e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Mainat the right margin. </p>
57850e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
57950e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
58050e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
58150e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
58250e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
58350e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
58450e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
58550e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
58650e990c64fa23ce94efa76b9e72df7f8ec3cee6aScott Main
587