Фильтрация приложений в Google Play Market


    Манифест       Фильтр     Функции     Разрешения     XML  

Элементы <uses-feature> в манифесте приложения

Google Play использует элементы <uses-feature>, объявленные в манифесте приложения, чтобы отфильтровать приложение от устройств, которые не соответствуют его аппаратным и программным требованиям.

Указание функций, которые требуются приложению, позволяет Google Play представлять данное приложение не всем пользователям, а только тем пользователям, чьи устройства соответствуют требованиям к функциям приложения.

Синтаксис объявления в манифесте приложения выглядит так:


<uses-feature
android:name="string"
android:required=["true" | "false"]
android:glEsVersion="integer" />

Такая запись объявляет одну аппаратную или программную функцию, используемую приложением.
Цель объявления <uses-feature> — сообщить любому внешнему объекту о наборе аппаратных и программных функций, от которых зависит данное приложение.

Атрибут required позволяет указать, требуется ли приложению функция, без которой оно не может работать, или оно предпочитает иметь такую функцию, но может работать и без нее.

Поскольку поддержка функций может различаться на разных устройствах Android, этот элемент <uses-feature> играет важную роль, позволяя приложению описывать функции, зависящие от устройства, которые оно использует.

Набор доступных функций, объявленных приложением, соответствует набору констант функций, доступных в Android Package Manager . Константы функций перечислены в представленном здесь cправочнике по функциям.

Необходимо указать каждую функцию в отдельном элементе <uses-feature>, поэтому, если приложению требуется несколько функций, оно будет объявлять несколько элементов <uses-feature>. Например, приложение, которому требуются функции Bluetooth и камеры в устройстве, должно объявить эти два элемента:

<uses-feature android:name="android.hardware.bluetooth" android:required="true" />
<uses-feature android:name="android.hardware.camera.any" android:required="true" />

Элементы объявления <uses-feature> носят только информационный характер. Это означает,что сама система Android не проверяет наличие соответствующей поддержки функций на устройстве перед установкой приложения.

Однако другие службы (например, Google Play) или приложения могут проверять объявления <uses-feature> приложения в рамках обработки или взаимодействия с приложением. По этой причине очень важно объявить все функции, которые использует приложение.

Для некоторых функций может существовать специальный атрибут, позволяющий определить версию функции, например используемую версию Open GL (объявленную с помощью glEsVersion).

Другие функции, которые либо существуют, либо не существуют для устройства, такие как камера, объявляются с помощью атрибута name.

Хотя элемент <uses-feature> активируется только для устройств с API уровня 4 или выше, эти элементы должны быть включены для всех приложений, даже если значение minSdkVersion «3» или ниже. Устройства, работающие под управлением более старых версий платформы, просто проигнорируют этот элемент.

При объявлении функции также необходимо запросить соответствующие разрешения. Например, нужно запросить разрешение CAMERA, прежде чем приложение сможет получить доступ к API камеры. Запрос разрешения предоставляет приложению доступ к соответствующему оборудованию и программному обеспечению. Объявление функций, используемых приложением, обеспечивает надлежащую совместимость устройств.

Атрибуты


  • android:name

    Указывает одну аппаратную или программную функцию, используемую приложением, в виде строки дескриптора. Допустимые значения атрибута (имена функций) перечислены в справочнике функций. Значения этих атрибутов чувствительны к регистру.


  • android:required

    Логическое значение, указывающее, требуется ли приложению функция, указанная в android:name.

    Когда объявлена функция с атрибутом android:required="true", это означает, что приложение не может работать или не предназначено для работы, когда указанная функция отсутствует на устройстве.

    Когда объявлена функция с атрибутом android:required="false", это означает, что приложение предпочитает использовать такую функцию, если она присутствует на устройстве, но при необходимости оно сможет работать и без указанной функции .

    Значение по умолчанию (если не объявлено) для android:required равно "true".


  • android:glEsVersion

    Версия OpenGL ES, необходимая приложению. Старшие 16 бит представляют собой старший номер, а младшие 16 бит представляют младший номер. Например, чтобы указать OpenGL ES версии 2.0, устанавливается значение «0x00020000», или чтобы указать OpenGL ES 3.2, устанавливается значение «0x00030002».

    Приложение должно указывать не более одного атрибута android:glEsVersion в своем манифесте. Если указано более одного, используется значение android:glEsVersion с наибольшим численным значением, а любые другие значения игнорируются.

    Если приложение не указывает атрибут android:glEsVersion, предполагается, что приложению требуется только OpenGL ES 1.0, который поддерживается всеми устройствами на базе Android.

    Приложение может предположить, что если платформа поддерживает данную версию OpenGL ES, она также поддерживает все версии OpenGL ES с более низкими номерами. Таким образом, приложение, которое требует как OpenGL ES 1.0, так и OpenGL ES 2.0, должно указать, что оно требует OpenGL ES 2.0.

    Приложение, которое может работать с любой из нескольких версий OpenGL ES, должно указывать только версию OpenGL ES с наименьшим численным значением, которая ему требуется. (Он может проверить во время выполнения, доступен ли более высокий уровень OpenGL ES.)

    Дополнительные сведения об использовании OpenGL ES, в том числе о том, как проверить поддерживаемую версию OpenGL ES во время выполнения, см. в руководстве по OpenGL ES API.