<supports-screens>
<uses-configuration>
<uses-feature>
<uses-library>
<uses-permission>
<uses-sdk>
Interested in publishing your app on Android Market?
Go to Android Market »When a user searches or browses in Android Market, the results are filtered based on which applications are compatible with the user's device. For example, if an application requires a trackball (as specified in the manifest file), then Android Market will not show the app on any device that does not have a trackball.
The manifest file and the device's hardware and features are only part of how applications are filtered—filtering might also depend on the country and carrier, the presence or absence of a SIM card, and other factors.
Changes to the Android Market filters are independent of changes to the Android platform itself. This document will be updated periodically to reflect any changes that affect the way Android Market filters applications.
Android Market uses the filter restrictions described below to determine whether to show your application to a user who is browsing or searching for applications on an Android-powered device. When determining whether to display your app, Market checks the device's hardware and software capabilities, as well as it's carrier, location, and other characteristics. It then compares those against the restrictions and dependencies expressed by the application itself, in its manifest file and publishing details. If the application is compatible with the device according to the filter rules, Market displays the application to the user. Otherwise, Market hides your application from search results and category browsing.
You can use the filters described below to control whether Market shows or
hides your application to users. You can use any combination of the
available filters for your app—for example, you can set a
minSdkVersion
requirement of "4"
and set
smallScreens="false"
in the app, then when uploading the app to
Market you could target European countries (carriers) only. Android Market's
filters would prevent the application from being visible on any device that did
not match all three of these requirements.
A filtered app is not visible within Market, even if a user specifically requests the app by clicking a deep link that points directly to the app's ID within Market. All filtering restrictions are associated with an application's version and can change between versions. For example:
Most Market filters are triggered by elements within an application's manifest file, AndroidManifest.xml, although not everything in the manifest file can trigger filtering. Table 1 lists the manifest elements that you should use to trigger Android Market filtering, and explains how the filtering for each element works.
Manifest Element | Filter Name | How It Works |
---|---|---|
<supports-screens>
|
Screen Size |
An application indicates the screen sizes that it is capable of supporting by
setting attributes of the As a general rule, Market assumes that the platform on the device can adapt smaller layouts to larger screens, but cannot adapt larger layouts to smaller screens. Thus, if an application declares support for "normal" screen size only, Market makes the application available to both normal- and large-screen devices, but filters the application so that it is not available to small-screen devices. If an application does not declare attributes for
Example 1 Example 2 Example 3 For more information on how to declare support for screen sizes in your
application, see |
<uses-configuration>
|
Device
Configuration: keyboard, navigation, touch screen |
An application can request certain hardware features, and Android Market will show the app only on devices that have the required hardware. Example 1 Example 2 For more details, see |
<uses-feature>
|
Device Features ( name ) |
An application can require certain device features to be present on the device. This functionality was introduced in Android 2.0 (API Level 5). Example 1 Example 2 For complete information, see Filtering based on implied features: In some cases, Android
Market interprets permissions requested through
|
OpenGL-ES
Version ( openGlEsVersion ) |
An application can require that the device support a specific
OpenGL-ES version using the Example 1 Example 2 Example 3 Example 4 For more details, see |
|
<uses-library> |
Software Libraries | An application can require specific shared libraries to be present on the device. Example 1 Example 2 For more details, see |
<uses-permission> |
Strictly, Android Market does not filter based on
<uses-permission> elements. However, it does read the
elements to determine whether the application has hardware feature requirements
that may not have been properly declared in <uses-feature>
elements. For example, if an application requests the CAMERA
permission but does not declare a <uses-feature> element for
android.hardware.camera , Android Market considers that the
application requires a camera and should not be shown to users whose devices do
not offer a camera.
In general, if an application requests hardware-related permissions,
Android Market assumes that the application requires the underlying hardware
features, even though there might be no corresponding to
For a list of permissions that imply hardware features, see
the documentation for the |
|
<uses-sdk> |
Minimum Framework Version (minSdkVersion ) |
An application can require a minimum API level. Example 1 Example 2 Because you want to avoid this second scenario, we recommend that you always declare a |
Maximum Framework Version (maxSdkVersion ) |
Deprecated. Android
2.1 and later do not check or enforce the Declaring |
Android Market uses other application characteristics to determine whether to show or hide an application for a particular user on a given device, as described in the table below.
Filter Name | How It Works |
---|---|
Publishing Status | Only published applications will appear in searches and browsing within Android Market. Even if an app is unpublished, it can be installed if users can see it in their Downloads area among their purchased, installed, or recently uninstalled apps. If an application has been suspended, users will not be able to reinstall or update it, even if it appears in their Downloads. |
Priced Status | Not all users can see paid apps. To show paid apps, a device must have a SIM card and be running Android 1.1 or later, and it must be in a country (as determined by SIM carrier) in which paid apps are available. |
Country / Carrier Targeting | When you upload your app to the Android Market, you can select specific countries to target. The app will only be visible to the countries (carriers) that you select, as follows:
|
Native Platform | An application that includes native libraries that target a specific platform (ARM EABI v7, for example) will only be visible on devices that support that platform. For details about the NDK and using native libraries, see What is the Android NDK? |
Forward-Locked Applications | To forward lock an application, set copy protection to "On" when you upload the application to Market. Market will not show copy-protected applications on developer devices or unreleased devices. |
In addition to the manifest elements in table 1, Android Market can also filter applications based on the advanced manifest elements in table 3.
These manifest elements and the filtering they trigger are for exceptional use-cases only. They are designed for some types of high-performance games and similar applications that require strict controls on application distribution. Most applications should never use these filters.
Manifest Element | Summary |
---|---|
<compatible-screens> |
Android Market filters the application if the device screen size and density does not match
any of the screen configurations (declared by a Caution: Normally, you should not use
this manifest element. Using this element can dramatically
reduce the potential user base for your application, by excluding all combinations of screen size
and density that you have not listed. You should instead use the |