page.title=&lt;uses-sdk&gt;
page.tags="api levels","sdk version","minsdkversion","targetsdkversion","maxsdkversion"
@jd:body


<div id="qv-wrapper">
<div id="qv">

<h2>In this document</h2>
<ol>
  <li><a href="#ApiLevels">What is API Level?</a></li>
  <li><a href="#uses">Uses of API Level in Android</a></li>
  <li><a href="#considerations">Development Considerations</a>
    <ol>
      <li><a href="#fc">Application forward compatibility</a></li>
      <li><a href="#bc">Application backward compatibility</a></li>
      <li><a href="#platform">Selecting a platform version and API Level</a></li>
      <li><a href="#apilevel">Declaring a minimum API Level</a></li>
      <li><a href="#testing">Testing against higher API Levels</a></li>
    </ol>
  </li>
  <li><a href="#provisional">Using a Provisional API Level</a></li>
  <li><a href="#filtering">Filtering the Reference Documentation by API Level</a></li>
</ol>
</div>
</div>

<div class="sidebox-wrapper">
<div class="sidebox">
    <img src="{@docRoot}assets/images/icon_play.png" style="float:left;margin:0;padding:0;">
    <p style="color:#669999;padding-top:1em;">Google Play Filtering</p>
    <p style="padding-top:1em;">Google Play uses the <code>&lt;uses-sdk&gt;</code>
    attributes declared in your app manifest to filter your app from devices
    that do not meet it's platform version requirements. Before setting these
    attributes, make sure that you understand
    <a href="{@docRoot}google/play/filters.html">Google Play filters</a>. </p>
  </div>
</div>

<dl class="xml">
<dt>syntax:</dt>
<dd><pre>
&lt;uses-sdk android:<a href="#min">minSdkVersion</a>="<i>integer</i>"
          android:<a href="#target">targetSdkVersion</a>="<i>integer</i>"
          android:<a href="#max">maxSdkVersion</a>="<i>integer</i>" /&gt;</pre></dd>

<dt>contained in:</dt>
<dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code></dd>

<dt>description:</dt>
<dd>Lets you express an application's compatibility with one or more versions of the Android platform,
by means of an API Level integer. The API Level expressed by an application will be compared to the
API Level of a given Android system, which may vary among different Android devices.
</p>

<p>Despite its name, this element is used to specify the API Level, <em>not</em>
the version number of the SDK (software development kit) or Android platform.
The API Level is always a single integer. You cannot derive the API Level from
its associated Android version number (for example, it is not the same as the
major version or the sum of the major and minor versions).</p>

<p>Also read the document about
<a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a>.
</p></dd>

<dt>attributes:</dt>

<dd>
<dl class="attr">
  <dt><a name="min"></a>{@code android:minSdkVersion}</dt>
  <dd>An integer designating the minimum API Level required
  for the application to run. The Android system will prevent the user from installing
  the application if the system's API Level is lower than the value specified in
  this attribute. You should always declare this attribute.

  <p class="caution"><strong>Caution:</strong> If you do not declare this
  attribute, the system assumes a default value of "1", which indicates that your
  application is compatible with all versions of Android. If your application is
  <em>not</em> compatible with all versions (for instance, it uses APIs introduced
  in API Level 3) and you have not declared the proper <code>minSdkVersion</code>,
  then when installed on a system with an API Level less than 3, the application
  will crash during runtime when attempting to access the unavailable APIs. For
  this reason, be certain to declare the appropriate API Level in the
  <code>minSdkVersion</code> attribute.</p>
  </dd>

  <dt><a name="target"></a>{@code android:targetSdkVersion}</dt>
  <dd>An integer designating the API Level that the application targets. If not set, the default
value equals that given to {@code minSdkVersion}.

  <p>This attribute informs the system that you have tested against the target version and the
system should not enable any compatibility behaviors to maintain your app's forward-compatibility
with the target version. The application is still able to run on older versions (down to {@code
minSdkVersion}).</p>

  <p>As Android evolves with each new version, some behaviors and even appearances might change.
However, if the API level of the platform is higher than the version declared by your app's {@code
targetSdkVersion}, the system may enable compatibility behaviors to ensure that your app
continues to work the way you expect. You can disable such compatibility
behaviors by specifying {@code targetSdkVersion} to match the API
level of the platform on which it's running. For example, setting this value to "11" or higher
allows the system to apply a new default theme (Holo) to your app when running on Android 3.0 or
higher and also disables <a href="{@docRoot}guide/practices/screen-compat-mode.html">screen
compatibility mode</a> when running on larger screens (because support for API level 11 implicitly
supports larger screens).</p>

  <p>There are many compatibility behaviors that the system may enable based on the value you set
for this attribute. Several of these behaviors are described by the corresponding platform versions
in the {@link android.os.Build.VERSION_CODES} reference.</p>

  <p>To maintain your application along with each Android release, you should increase
the value of this attribute to match the latest API level, then thoroughly test your application on
the corresponding platform version.</p>

  <p>Introduced in: API Level 4</p>
  </dd>

  <dt><a name="max"></a>{@code android:maxSdkVersion}</dt>
  <dd>An integer designating the maximum API Level on which the application is
  designed to run.

  <p>In Android 1.5, 1.6, 2.0, and 2.0.1, the system checks the value of this
  attribute when installing an application and when re-validating the application
  after a system update. In either case, if the application's
  <code>maxSdkVersion</code> attribute is lower than the API Level used by
  the system itself, then the system will not allow the application to be
  installed. In the case of re-validation after system update, this effectively
  removes your application from the device.

  <p>To illustrate how this attribute can affect your application after system
  updates, consider the following example: </p>

  <p>An application declaring <code>maxSdkVersion="5"</code> in its
  manifest is published on Google Play. A user whose device is running Android
  1.6 (API Level 4) downloads and installs the app. After a few weeks, the user
  receives an over-the-air system update to Android 2.0 (API Level 5). After the
  update is installed, the system checks the application's
  <code>maxSdkVersion</code> and successfully re-validates it. The
  application functions as normal. However, some time later, the device receives
  another system update, this time to Android 2.0.1 (API Level 6). After the
  update, the system can no longer re-validate the application because the system's
  own API Level (6) is now higher than the maximum supported by the application
  (5). The system prevents the application from being visible to the user, in
  effect removing it from the device.</p>

  <p class="warning"><strong>Warning:</strong> Declaring this attribute is not
  recommended. First, there is no need to set the attribute as means of blocking
  deployment of your application onto new versions of the Android platform as they
  are released. By design, new versions of the platform are fully
  backward-compatible. Your application should work properly on new versions,
  provided it uses only standard APIs and follows development best practices.
  Second, note that in some cases, declaring the attribute can <strong>result in
  your application being removed from users' devices after a system
  update</strong> to a higher API Level. Most devices on which your application
  is likely to be installed will receive periodic system updates over the air, so
  you should consider their effect on your application before setting this
  attribute.</p>

  <p style="margin-bottom:1em;">Introduced in: API Level 4</p>

  <div class="special">Future versions of Android (beyond Android 2.0.1) will no
longer check or enforce the <code>maxSdkVersion</code> attribute during
installation or re-validation. Google Play will continue to use the attribute
as a filter, however, when presenting users with applications available for
download. </div>
  </dd>


</dl></dd>

<!-- ##api level indication## -->
<dt>introduced in:</dt>
<dd>API Level 1</dd>

</dl>





<!--- CONTENT FROM OLD API LEVEL DOC ---->




<h2 id="ApiLevels">What is API Level?</h2>

<p>API Level is an integer value that uniquely identifies the framework API
revision offered by a version of the Android platform.</p>

<p>The Android platform provides a framework API that applications can use to
interact with the underlying Android system. The framework API consists of:</p>

<ul>
<li>A core set of packages and classes</li>
<li>A set of XML elements and attributes for declaring a manifest file</li>
<li>A set of XML elements and attributes for declaring and accessing resources</li>
<li>A set of Intents</li>
<li>A set of permissions that applications can request, as well as permission
enforcements included in the system</li>
</ul>

<p>Each successive version of the Android platform can include updates to the
Android application framework API that it delivers. </p>

<p>Updates to the framework API are designed so that the new API remains
compatible with earlier versions of the API. That is, most changes in the API
are additive and introduce new or replacement functionality. As parts of the API
are upgraded, the older replaced parts are deprecated but are not removed, so
that existing applications can still use them. In a very small number of cases,
parts of the API may be modified or removed, although typically such changes are
only needed to ensure API robustness and application or system security. All
other API parts from earlier revisions are carried forward without
modification.</p>

<p>The framework API that an Android platform delivers is specified using an
integer identifier called "API Level". Each Android platform version supports
exactly one API Level, although support is implicit for all earlier API Levels
(down to API Level 1). The initial release of the Android platform provided
API Level 1 and subsequent releases have incremented the API Level.</p>

<p>The table below specifies the API Level supported by each version of the
Android platform. For information about the relative numbers of devices that
are running each version, see the <a href="{@docRoot}about/dashboards/index.html">Platform
Versions dashboards page</a>.</p>

<table>
  <tr><th>Platform Version</th><th>API Level</th><th>VERSION_CODE</th><th>Notes</th></tr>

    <tr><td><a href="{@docRoot}about/versions/android-4.4.html">Android 4.4</a></td>
    <td><a href="{@docRoot}sdk/api_diff/19/changes.html" title="Diff Report">19</a></td>
    <td>{@link android.os.Build.VERSION_CODES#KITKAT}</td>
    <td><a href="{@docRoot}about/versions/kitkat.html">Platform
Highlights</a></td></tr>

    <tr><td><a href="{@docRoot}about/versions/android-4.3.html">Android 4.3</a></td>
    <td><a href="{@docRoot}sdk/api_diff/18/changes.html" title="Diff Report">18</a></td>
    <td>{@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}</td>
    <td><a href="{@docRoot}about/versions/jelly-bean.html">Platform
Highlights</a></td></tr>

    <tr><td><a href="{@docRoot}about/versions/android-4.2.html">Android 4.2, 4.2.2</a></td>
    <td><a href="{@docRoot}sdk/api_diff/17/changes.html" title="Diff Report">17</a></td>
    <td>{@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}</td>
    <td><a href="{@docRoot}about/versions/jelly-bean.html#android-42">Platform
Highlights</a></td></tr>

    <tr><td><a href="{@docRoot}about/versions/android-4.1.html">Android 4.1, 4.1.1</a></td>
    <td><a href="{@docRoot}sdk/api_diff/16/changes.html" title="Diff Report">16</a></td>
    <td>{@link android.os.Build.VERSION_CODES#JELLY_BEAN}</td>
    <td><a href="{@docRoot}about/versions/jelly-bean.html#android-41">Platform
Highlights</a></td></tr>

    <tr><td><a href="{@docRoot}about/versions/android-4.0.3.html">Android 4.0.3, 4.0.4</a></td>
    <td><a href="{@docRoot}sdk/api_diff/15/changes.html" title="Diff Report">15</a></td>
    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1}</td>
    <td rowspan="2"><a href="{@docRoot}about/versions/android-4.0-highlights.html">Platform
Highlights</a></td></tr>

    <tr><td><a href="{@docRoot}about/versions/android-4.0.html">Android 4.0, 4.0.1, 4.0.2</a></td>
    <td><a href="{@docRoot}sdk/api_diff/14/changes.html" title="Diff Report">14</a></td>
    <td>{@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}</td>
    </tr>

    <tr><td><a href="{@docRoot}about/versions/android-3.2.html">Android 3.2</a></td>
    <td><a href="{@docRoot}sdk/api_diff/13/changes.html" title="Diff Report">13</a></td>
    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}</td>
    <td><!-- <a href="{@docRoot}about/versions/android-3.2-highlights.html">Platform
Highlights</a>--></td></tr>

  <tr><td><a href="{@docRoot}about/versions/android-3.1.html">Android 3.1.x</a></td>
    <td><a href="{@docRoot}sdk/api_diff/12/changes.html" title="Diff Report">12</a></td>
    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB_MR1}</td>
    <td><a href="{@docRoot}about/versions/android-3.1-highlights.html">Platform Highlights</a></td></tr>

  <tr><td><a href="{@docRoot}about/versions/android-3.0.html">Android 3.0.x</a></td>
    <td><a href="{@docRoot}sdk/api_diff/11/changes.html" title="Diff Report">11</a></td>
    <td>{@link android.os.Build.VERSION_CODES#HONEYCOMB}</td>
    <td><a href="{@docRoot}about/versions/android-3.0-highlights.html">Platform Highlights</a></td></tr>

  <tr><td><a href="{@docRoot}about/versions/android-2.3.3.html">Android 2.3.4<br>Android 2.3.3</a></td>
    <td><a href="{@docRoot}sdk/api_diff/10/changes.html" title="Diff Report">10</a></td>
    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD_MR1}</td>
    <td rowspan="2"><a href="{@docRoot}about/versions/android-2.3-highlights.html">Platform
Highlights</a></td></tr>

  <tr><td><a href="{@docRoot}about/versions/android-2.3.html">Android 2.3.2<br>Android 2.3.1<br>
  Android 2.3</a></td>
    <td><a href="{@docRoot}sdk/api_diff/9/changes.html" title="Diff Report">9</a></td>
    <td>{@link android.os.Build.VERSION_CODES#GINGERBREAD}</td>
    </tr>

  <tr><td><a href="{@docRoot}about/versions/android-2.2.html">Android 2.2.x</a></td>
    <td ><a href="{@docRoot}sdk/api_diff/8/changes.html" title="Diff Report">8</a></td>
    <td>{@link android.os.Build.VERSION_CODES#FROYO}</td>
    <td><a href="{@docRoot}about/versions/android-2.2-highlights.html">Platform Highlights</a></td></tr>

  <tr><td><a href="{@docRoot}about/versions/android-2.1.html">Android 2.1.x</a></td>
    <td><a href="{@docRoot}sdk/api_diff/7/changes.html" title="Diff Report">7</a></td>
    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_MR1}</td>
    <td rowspan="3" ><a href="{@docRoot}about/versions/android-2.0-highlights.html">Platform
Highlights</a></td></tr>

  <tr><td><a href="{@docRoot}about/versions/android-2.0.1.html">Android 2.0.1</a></td>
    <td><a href="{@docRoot}sdk/api_diff/6/changes.html" title="Diff Report">6</a></td>
    <td>{@link android.os.Build.VERSION_CODES#ECLAIR_0_1}</td>
    </tr>

  <tr><td><a href="{@docRoot}about/versions/android-2.0.html">Android 2.0</a></td>
    <td><a href="{@docRoot}sdk/api_diff/5/changes.html" title="Diff Report">5</a></td>
    <td>{@link android.os.Build.VERSION_CODES#ECLAIR}</td>
    </tr>

  <tr><td><a href="{@docRoot}about/versions/android-1.6.html">Android 1.6</a></td>
    <td><a href="{@docRoot}sdk/api_diff/4/changes.html" title="Diff Report">4</a></td>
    <td>{@link android.os.Build.VERSION_CODES#DONUT}</td>
    <td><a href="{@docRoot}about/versions/android-1.6-highlights.html">Platform Highlights</a></td></tr>

  <tr><td><a href="{@docRoot}about/versions/android-1.5.html">Android 1.5</a></td>
    <td><a href="{@docRoot}sdk/api_diff/3/changes.html" title="Diff Report">3</a></td>
    <td>{@link android.os.Build.VERSION_CODES#CUPCAKE}</td>
    <td><a href="{@docRoot}about/versions/android-1.5-highlights.html">Platform Highlights</a></td></tr>

  <tr><td><a href="{@docRoot}about/versions/android-1.1.html">Android 1.1</a></td>
    <td>2</td>
    <td>{@link android.os.Build.VERSION_CODES#BASE_1_1}</td><td></td></tr>

  <tr><td>Android 1.0</td>
    <td>1</td>
    <td>{@link android.os.Build.VERSION_CODES#BASE}</td>
    <td></td></tr>
</table>


<h2 id="uses">Uses of API Level in Android</h2>

<p>The API Level identifier serves a key role in ensuring the best possible
experience for users and application developers:

<ul>
<li>It lets the Android platform describe the maximum framework API revision
that it supports</li>
<li>It lets applications describe the framework API revision that they
require</li>
<li>It lets the system negotiate the installation of applications on the user's
device, such that version-incompatible applications are not installed.</li>
</ul>

<p>Each Android platform version stores its API Level identifier internally, in
the Android system itself. </p>

<p>Applications can use a manifest element provided by the framework API &mdash;
<code>&lt;uses-sdk&gt;</code> &mdash; to describe the minimum and maximum API
Levels under which they are able to run, as well as the preferred API Level that
they are designed to support. The element offers three key attributes:</p>

<ul>
<li><code>android:minSdkVersion</code> &mdash; Specifies the minimum API Level
on which the application is able to run. The default value is "1".</li>
<li><code>android:targetSdkVersion</code> &mdash; Specifies the API Level
on which the application is designed to run. In some cases, this allows the
application to use manifest elements or behaviors defined in the target
API Level, rather than being restricted to using only those defined
for the minimum API Level.</li>
<li><code>android:maxSdkVersion</code> &mdash; Specifies the maximum API Level
on which the application is able to run. <strong>Important:</strong> Please read the <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
documentation before using this attribute.  </li>
</ul>

<p>For example, to specify the minimum system API Level that an application
requires in order to run, the application would include in its manifest a
<code>&lt;uses-sdk&gt;</code> element with a <code>android:minSdkVersion</code>
attribute. The value of <code>android:minSdkVersion</code> would be the integer
corresponding to the API Level of the earliest version of the Android platform
under which the application can run. </p>

<p>When the user attempts to install an application, or when revalidating an
appplication after a system update, the Android system first checks the
<code>&lt;uses-sdk&gt;</code> attributes in the application's manifest and
compares the values against its own internal API Level. The system allows the
installation to begin only if these conditions are met:</p>

<ul>
<li>If a <code>android:minSdkVersion</code> attribute is declared, its value
must be less than or equal to the system's API Level integer. If not declared,
the system assumes that the application requires API Level 1. </li>
<li>If a <code>android:maxSdkVersion</code> attribute is declared, its value
must be equal to or greater than the system's API Level integer.
If not declared, the system assumes that the application
has no maximum API Level. Please read the <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
documentation for more information about how the system handles this attribute.</li>
</ul>

<p>When declared in an application's manifest, a <code>&lt;uses-sdk&gt;</code>
element might look like this: </p>

<pre>&lt;manifest&gt;
  &lt;uses-sdk android:minSdkVersion="5" /&gt;
  ...
&lt;/manifest&gt;</pre>

<p>The principal reason that an application would declare an API Level in
<code>android:minSdkVersion</code> is to tell the Android system that it is
using APIs that were <em>introduced</em> in the API Level specified. If the
application were to be somehow installed on a platform with a lower API Level,
then it would crash at run-time when it tried to access APIs that don't exist.
The system prevents such an outcome by not allowing the application to be
installed if the lowest API Level it requires is higher than that of the
platform version on the target device.</p>

<p>For example, the {@link android.appwidget} package was introduced with API
Level 3. If an application uses that API, it must declare a
<code>android:minSdkVersion</code> attribute with a value of "3". The
application will then be installable on platforms such as Android 1.5 (API Level
3) and Android 1.6 (API Level 4), but not on the Android 1.1 (API Level 2) and
Android 1.0 platforms (API Level 1).</p>

<p>For more information about how to specify an application's API Level
requirements, see the <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
 section of the manifest file documentation.</p>


<h2 id="considerations">Development Considerations</h2>

<p>The sections below provide information related to API level that you should
consider when developing your application.</p>

<h3 id="fc">Application forward compatibility</h3>

<p>Android applications are generally forward-compatible with new versions of
the Android platform.</p>

<p>Because almost all changes to the framework API are additive, an Android
application developed using any given version of the API (as specified by its
API Level) is forward-compatible with later versions of the Android platform and
higher API levels. The application should be able to run on all later versions
of the Android platform, except in isolated cases where the application uses a
part of the API that is later removed for some reason. </p>

<p>Forward compatibility is important because many Android-powered devices
receive over-the-air (OTA) system updates. The user may install your
application and use it successfully, then later receive an OTA update to a new
version of the Android platform. Once the update is installed, your application
will run in a new run-time version of the environment, but one that has the API
and system capabilities that your application depends on. </p>

<p>In some cases, changes <em>below</em> the API, such those in the underlying
system itself, may affect your application when it is run in the new
environment. For that reason it's important for you, as the application
developer, to understand how the application will look and behave in each system
environment. To help you test your application on various versions of the Android
platform, the Android SDK includes multiple platforms that you can download.
Each platform includes a compatible system image that you can run in an AVD, to
test your application. </p>

<h3 id="bc">Application backward compatibility</h3>

<p>Android applications are not necessarily backward compatible with versions of
the Android platform older than the version against which they were compiled.
</p>

<p>Each new version of the Android platform can include new framework APIs, such
as those that give applications access to new platform capabilities or replace
existing API parts. The new APIs are accessible to applications when running on
the new platform and, as mentioned above, also when running on later versions of
the platform, as specified by API Level. Conversely, because earlier versions of
the platform do not include the new APIs, applications that use the new APIs are
unable to run on those platforms.</p>

<p>Although it's unlikely that an Android-powered device would be downgraded to
a previous version of the platform, it's important to realize that there are
likely to be many devices in the field that run earlier versions of the
platform. Even among devices that receive OTA updates, some might lag and
might not receive an update for a significant amount of time. </p>

<h3 id="platform">Selecting a platform version and API Level</h3>

<p>When you are developing your application, you will need to choose
the platform version against which you will compile the application. In
general, you should compile your application against the lowest possible
version of the platform that your application can support.

<p>You can determine the lowest possible platform version by compiling the
application against successively lower build targets. After you determine the
lowest version, you should create an AVD using the corresponding platform
version (and API Level) and fully test your application. Make sure to declare a
<code>android:minSdkVersion</code> attribute in the application's manifest and
set its value to the API Level of the platform version. </p>

<h3 id="apilevel">Declaring a minimum API Level</h3>

<p>If you build an application that uses APIs or system features introduced in
the latest platform version, you should set the
<code>android:minSdkVersion</code> attribute to the API Level of the latest
platform version. This ensures that users will only be able to install your
application if their devices are running a compatible version of the Android
platform. In turn, this ensures that your application can function properly on
their devices. </p>

<p>If your application uses APIs introduced in the latest platform version but
does <em>not</em> declare a <code>android:minSdkVersion</code> attribute, then
it will run properly on devices running the latest version of the platform, but
<em>not</em> on devices running earlier versions of the platform. In the latter
case, the application will crash at runtime when it tries to use APIs that don't
exist on the earlier versions.</p>

<h3 id="testing">Testing against higher API Levels</h3>

<p>After compiling your application, you should make sure to test it on the
platform specified in the application's <code>android:minSdkVersion</code>
attribute. To do so, create an AVD that uses the platform version required by
your application. Additionally, to ensure forward-compatibility, you should run
and test the application on all platforms that use a higher API Level than that
used by your application. </p>

<p>The Android SDK includes multiple platform versions that you can use,
including the latest version, and provides an updater tool that you can use to
download other platform versions as necessary. </p>

<p>To access the updater, use the <code>android</code> command-line tool,
located in the &lt;sdk&gt;/tools directory. You can launch the SDK updater by
executing <code>android sdk</code>. You can
also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
In ADT, you can also access the updater by selecting
<strong>Window</strong>&nbsp;>&nbsp;<strong>Android SDK
Manager</strong>.</p>

<p>To run your application against different platform versions in the emulator,
create an AVD for each platform version that you want to test. For more
information about AVDs, see <a
href="{@docRoot}tools/devices/index.html">Creating and Managing Virtual Devices</a>. If
you are using a physical device for testing, ensure that you know the API Level
of the Android platform it runs. See the table at the top of this document for
a list of platform versions and their API Levels. </p>

<h2 id="provisional">Using a Provisional API Level</h2>

<p>In some cases, an "Early Look" Android SDK platform may be available. To let
you begin developing on the platform although the APIs may not be final, the
platform's API Level integer will not be specified. You must instead use the
platform's <em>provisional API Level</em> in your application manifest, in order
to build applications against the platform. A provisional API Level is not an
integer, but a string matching the codename of the unreleased platform version.
The provisional API Level will be specified in the release notes for the Early
Look SDK release notes and is case-sensitive.</p>

<p>The use of a provisional API Level is designed to protect developers and
device users from inadvertently publishing or installing applications based on
the Early Look framework API, which may not run properly on actual devices
running the final system image.</p>

<p>The provisional API Level will only be valid while using the Early Look SDK
and can only be used to run applications in the emulator. An application using
the provisional API Level can never be installed on an Android device. At the
final release of the platform, you must replace any instances of the provisional
API Level in your application manifest with the final platform's actual API
Level integer.</p>


<h2 id="filtering">Filtering the Reference Documentation by API Level</h2>

<p>Reference documentation pages on the Android Developers site offer a "Filter
by API Level" control in the top-right area of each page. You can use the
control to show documentation only for parts of the API that are actually
accessible to your application, based on the API Level that it specifies in
the <code>android:minSdkVersion</code> attribute of its manifest file. </p>

<p>To use filtering, select the checkbox to enable filtering, just below the
page search box. Then set the "Filter by API Level" control to the same API
Level as specified by your application. Notice that APIs introduced in a later
API Level are then grayed out and their content is masked, since they would not
be accessible to your application. </p>

<p>Filtering by API Level in the documentation does not provide a view
of what is new or introduced in each API Level &mdash; it simply provides a way
to view the entire API associated with a given API Level, while excluding API
elements introduced in later API Levels.</p>

<p>If you decide that you don't want to filter the API documentation, just
disable the feature using the checkbox. By default, API Level filtering is
disabled, so that you can view the full framework API, regardless of API Level.
</p>

<p>Also note that the reference documentation for individual API elements
specifies the API Level at which each element was introduced. The API Level
for packages and classes is specified as "Since &lt;api level&gt;" at the
top-right corner of the content area on each documentation page. The API Level
for class members is specified in their detailed description headers,
at the right margin. </p>









