Фильтры в Google Play

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

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

Фильтрация Google Play частично основана на декларациях манифеста и других аспектах платформы Android, но фактическое поведение фильтрации отличается от платформы и не привязано к конкретным уровням API. В этом документе указаны текущие правила фильтрации, используемые Google Play.

Как работают фильтры в Google Play

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

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

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

Вы можете использовать любую комбинацию доступных фильтров для своего приложения. Например, вы можете установить требование minSdkVersion "4" и установить smallScreens="false" в приложении, тогда при загрузке приложения в Google Play вы сможете ориентироваться только на европейские страны (операторов). Таким образом, фильтры Google Play предотвратят доступность приложения на любом устройстве, которое не соответствует всем трем этим требованиям.

Все ограничения фильтрации связаны с версией приложения и могут меняться в зависимости от версии. Например, если пользователь установил ваше приложение, а вы публикуете обновление, которое делает приложение невидимым для пользователя, он не увидит, что обновление доступно.

Фильтрация на сайте Google Play

Когда пользователи просматривают веб-сайт Google Play , они могут видеть все опубликованные приложения. Однако веб-сайт Google Play сравнивает требования к приложению для каждого из зарегистрированных устройств пользователя на предмет совместимости и разрешает им устанавливать приложение только в том случае, если оно совместимо с их устройством.

Фильтрация на основе манифеста приложения

Большинство фильтров активируются элементами файла манифеста приложения AndroidManifest.xml (хотя не все в файле манифеста может запускать фильтрацию). В таблице 1 перечислены элементы манифеста, которые следует использовать для запуска фильтрации, и объясняется, как работает фильтрация для каждого элемента.

Таблица 1. Элементы манифеста, запускающие фильтрацию в Google Play.

Элемент манифеста Имя фильтра Как это работает
<supports-screens> Размер экрана

Приложение указывает размеры экрана, которые оно способно поддерживать, путем установки атрибутов элемента <supports-screens> . Когда приложение публикуется, Google Play использует эти атрибуты, чтобы определить, показывать ли приложение пользователям, в зависимости от размеров экрана их устройств.

Как правило, Google Play предполагает, что платформа на устройстве может адаптировать меньшие макеты к экранам большего размера, но не может адаптировать макеты большего размера к экранам меньшего размера. Таким образом, если приложение заявляет о поддержке только «нормального» размера экрана, Google Play делает приложение доступным как для устройств с обычным, так и с большим экраном, но фильтрует приложение так, чтобы оно было недоступно для устройств с маленьким экраном.

Если приложение не объявляет атрибуты для <supports-screens> , Google Play использует для этих атрибутов значения по умолчанию, которые различаются в зависимости от уровня API. Конкретно:

  • Для приложений, которые устанавливают для android: minSdkVersion или android: targetSdkVersion значение 3 или ниже, сам элемент <supports-screens> не определен и атрибуты недоступны. В этом случае Google Play предполагает, что приложение предназначено для экранов обычного размера, и показывает его на устройствах с обычными или большими экранами.

  • Если для параметра android: minSdkVersion или android: targetSdkVersion установлено значение 4 или выше, значением по умолчанию для всех атрибутов является "true" . Таким образом, считается, что приложение по умолчанию поддерживает все размеры экрана.

Пример 1
Манифест объявляет <uses-sdk android:minSdkVersion="3"> и не включает элемент <supports-screens> . Результат : Google Play не покажет приложение пользователю устройства с маленьким экраном, но покажет его пользователям обычных устройств и устройств с большим экраном, если не будут применены другие фильтры.

Пример 2
Манифест объявляет <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"> и не включает элемент <supports-screens> . Результат : Google Play покажет приложение пользователям на всех устройствах, если не будут применены другие фильтры.

Пример 3
Манифест объявляет <uses-sdk android:minSdkVersion="4"> и не включает элемент <supports-screens> . Результат : Google Play покажет приложение всем пользователям, если не будут применены другие фильтры.

Дополнительные сведения о том, как объявить поддержку размеров экрана в вашем приложении, см. в разделах <supports-screens> и Supporting Multiple Screens .

<uses-configuration> Конфигурация устройства:
клавиатура, навигация, сенсорный экран

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

Пример 1
Манифест включает <uses-configuration android:reqFiveWayNav="true" /> , и пользователь ищет приложения на устройстве, не имеющем пятипозиционного навигационного элемента управления. Результат : Google Play не покажет приложение пользователю.

Пример 2
Манифест не включает элемент <uses-configuration> . Результат : Google Play покажет приложение всем пользователям, если не будут применены другие фильтры.

Дополнительные сведения см. в разделе <uses-configuration> .

<uses-feature> Особенности устройства
( name )

Приложению может потребоваться наличие определенных функций устройства. Эта функция была представлена ​​в Android 2.0 (уровень API 5).

Пример 1
Манифест включает <uses-feature android:name="android.hardware.sensor.light" /> , и пользователь ищет приложения на устройстве, не имеющем датчика освещенности. Результат : Google Play не покажет приложение пользователю.

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

Полную информацию см. в разделе <uses-feature> .

Фильтрация на основе подразумеваемых функций. В некоторых случаях Google Play интерпретирует разрешения, запрашиваемые через элементы <uses-permission> , как требования к функциям, эквивалентные тем, которые объявлены в элементах <uses-feature> . См. <uses-permission> ниже.

Версия OpenGL-ES
( openGlEsVersion )

Приложение может потребовать, чтобы устройство поддерживало определенную версию OpenGL-ES, используя атрибут <uses-feature android:openGlEsVersion="int"> .

Пример 1
Приложение запрашивает несколько версий OpenGL-ES, несколько раз указав openGlEsVersion в манифесте. Результат : Google Play предполагает, что приложению требуется самая высокая из указанных версий.

Пример 2
Приложение запрашивает OpenGL-ES версии 1.1, а пользователь ищет приложения на устройстве, поддерживающем OpenGL-ES версии 2.0. Результат : Google Play покажет приложение пользователю, если не будут применены другие фильтры. Если устройство сообщает, что оно поддерживает OpenGL-ES версии X , Google Play предполагает, что оно также поддерживает любую версию, предшествующую X.

Пример 3
Пользователь ищет приложения на устройстве, которое не сообщает версию OpenGL-ES (например, устройство под управлением Android 1.5 или более ранней версии). Результат : Google Play предполагает, что устройство поддерживает только OpenGL-ES 1.0. Google Play будет отображать только те пользовательские приложения, в которых не указана openGlEsVersion , или приложения, в которых не указана версия OpenGL-ES выше 1.0.

Пример 4
В манифесте не указан openGlEsVersion . Результат : Google Play покажет приложение всем пользователям, если не будут применены другие фильтры.

Дополнительные сведения см. в разделе <uses-feature> .

<uses-library> Библиотеки программного обеспечения

Приложению может потребоваться наличие на устройстве определенных общих библиотек.

Пример 1
Приложению требуется библиотека com.google.android.maps , а пользователь ищет приложения на устройстве, на котором нет библиотеки com.google.android.maps . Результат : Google Play не покажет приложение пользователю.

Пример 2
Манифест не включает элемент <uses-library> . Результат : Google Play покажет приложение всем пользователям, если не будут применены другие фильтры.

Более подробную информацию см. в разделе <uses-library> .

<uses-permission>

Строго говоря, Google Play не осуществляет фильтрацию на основе элементов <uses-permission> . Однако он считывает элементы, чтобы определить, есть ли у приложения требования к аппаратным функциям, которые, возможно, не были должным образом объявлены в элементах <uses-feature> . Например, если приложение запрашивает разрешение CAMERA , но не объявляет элемент <uses-feature> для android.hardware.camera , Google Play считает, что приложению требуется камера и его не следует показывать пользователям, чьи устройства не поддерживают эту функцию. камера.

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

Список разрешений, подразумевающих аппаратные функции, см. в документации по элементу <uses-feature> .

<uses-sdk> Минимальная версия платформы ( minSdkVersion )

Приложению может потребоваться минимальный уровень API.

Пример 1
Манифест включает <uses-sdk android:minSdkVersion="3"> , а приложение использует API-интерфейсы, представленные на уровне API 3. Пользователь ищет приложения на устройстве с уровнем API 2. Результат : Google Play не будет покажите приложение пользователю.

Пример 2
Манифест не включает minSdkVersion , а приложение использует API, представленные на уровне API 3. Пользователь ищет приложения на устройстве с уровнем API 2. Результат : Google Play предполагает, что minSdkVersion имеет значение «1» и что приложение совместимо со всеми версиями Android. Google Play показывает приложение пользователю и позволяет ему загрузить приложение. Приложение вылетает во время выполнения.

Поскольку вы хотите избежать второго сценария, мы рекомендуем всегда объявлять minSdkVersion . Подробности см. в android:minSdkVersion .

Максимальная версия платформы ( maxSdkVersion )

Устарело. Android 2.1 и более поздних версий не проверяют и не применяют атрибут maxSdkVersion , а пакет SDK не будет компилироваться, если maxSdkVersion установлен в манифесте приложения. Для устройств, уже скомпилированных с помощью maxSdkVersion , Google Play будет учитывать его и использовать для фильтрации.

Объявлять maxSdkVersion не рекомендуется. Подробности см. в разделе android:maxSdkVersion .

Расширенные фильтры манифеста

Помимо элементов манифеста из таблицы 1 , Google Play также может фильтровать приложения на основе расширенных элементов манифеста из таблицы 2.

Эти элементы манифеста и фильтрация, которую они запускают, предназначены только для исключительных случаев использования. Они предназначены для определенных типов высокопроизводительных игр и подобных приложений, требующих строгого контроля за распространением приложений. Большинству приложений никогда не следует использовать эти фильтры .

Таблица 2. Расширенные элементы манифеста для фильтрации Google Play.

Элемент манифеста Краткое содержание
<compatible-screens>

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

Внимание: Обычно этот элемент манифеста использовать не следует . Использование этого элемента может значительно сократить потенциальную базу пользователей вашего приложения за счет исключения всех комбинаций размера и плотности экрана, которые вы не указали. Вместо этого вам следует использовать элемент манифеста <supports-screens> (описанный выше в таблице 1 ), чтобы включить режим совместимости экрана для конфигураций экрана, которые вы не учли с альтернативными ресурсами.

<supports-gl-texture>

Google Play фильтрует приложение, если только один или несколько форматов сжатия текстур GL, поддерживаемых приложением, также не поддерживаются устройством.

Другие фильтры

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

Таблица 3. Характеристики приложения и публикации, влияющие на фильтрацию в Google Play.

Имя фильтра Как это работает
Статус публикации

Только опубликованные приложения будут отображаться в результатах поиска и просмотрах в Google Play.

Даже если приложение не опубликовано, его можно установить, если пользователи видят его в области «Загрузки» среди приобретенных, установленных или недавно удаленных приложений.

Если приложение было приостановлено, пользователи не смогут переустановить или обновить его, даже если оно отображается в их загрузках.

Статус цены

Не все пользователи видят платные приложения. Чтобы показывать платные приложения, устройство должно работать под управлением Android 1.1 или более поздней версии и находиться в стране, где доступны платные приложения. Если в устройстве есть SIM-карта, оператор SIM-карты определяет, доступны ли платные приложения. Если в устройстве нет SIM-карты, IP-адрес устройства используется для определения того, находится ли устройство в стране, где доступны платные приложения.

Страновой таргетинг

Загружая свое приложение в Google Play, вы можете выбрать страны, в которых оно будет распространяться, в разделе «Цены и распространение» . После этого приложение будет доступно пользователям только в выбранных вами странах.

Архитектура ЦП (ABI)

Приложение, включающее собственные библиотеки, ориентированные на определенную архитектуру ЦП (например, ARM EABI v7 или x86), отображается только на устройствах, поддерживающих эту архитектуру. Подробные сведения о NDK и использовании собственных библиотек см. в разделе Что такое Android NDK?

Приложения, защищенные от копирования

Google Play больше не поддерживает функцию защиты от копирования в Play Console и не фильтрует приложения на ее основе. Чтобы защитить свое приложение, используйте вместо этого лицензирование приложений . Дополнительную информацию см. в разделе Замена защиты от копирования .

Публикация нескольких APK с разными фильтрами

Некоторые специальные фильтры Google Play позволяют публиковать несколько APK-файлов для одного и того же приложения, чтобы предоставлять разные APK-файлы для разных конфигураций устройств. Например, если вы создаете видеоигру, в которой используются высококачественные графические ресурсы, вам может потребоваться создать два APK-файла, каждый из которых поддерживает разные форматы сжатия текстур. Таким образом, вы можете уменьшить размер APK-файла, включив в него только те текстуры, которые необходимы для каждой конфигурации устройства. В зависимости от поддержки каждым устройством ваших форматов сжатия текстур Google Play предоставит ему APK-файл, который, как вы заявили, поддерживает это устройство.

В настоящее время Google Play позволяет публиковать несколько APK для одного и того же приложения только в том случае, если каждый APK предоставляет разные фильтры на основе следующих конфигураций:

  • Форматы сжатия текстур OpenGL

    С помощью элемента <supports-gl-texture> .

  • Размер экрана (и, опционально, плотность экрана)

    С помощью элемента <supports-screens> или <compatible-screens> .

  • уровень API

    С помощью элемента <uses-sdk> .

  • Архитектура ЦП (ABI)

    Путем включения собственных библиотек, созданных с помощью Android NDK , предназначенных для конкретной архитектуры ЦП (например, ARM EABI v7 или x86).

Все остальные фильтры по-прежнему работают как обычно, но эти четыре — единственные фильтры, которые могут отличить один APK от другого в одном и том же списке приложений в Google Play. Например, вы не можете опубликовать несколько APK-файлов для одного и того же приложения, если APK-файлы различаются только в зависимости от того, есть ли на устройстве камера.

Внимание: публикация нескольких APK-файлов для одного и того же приложения считается расширенной функцией, и большинство приложений должны публиковать только один APK-файл, который поддерживает широкий спектр конфигураций устройств . Публикация нескольких APK-файлов требует соблюдения определенных правил в рамках фильтров и особого внимания к кодам версий каждого APK-файла, чтобы обеспечить правильные пути обновления для каждой конфигурации.

Если вам нужна дополнительная информация о том, как опубликовать несколько APK-файлов в Google Play, прочтите статью «Поддержка нескольких APK-файлов» .

См. также

  1. Совместимость с Android
  2. Поддержка нескольких APK
,

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

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

Фильтрация Google Play частично основана на декларациях манифеста и других аспектах платформы Android, но фактическое поведение фильтрации отличается от платформы и не привязано к конкретным уровням API. В этом документе указаны текущие правила фильтрации, используемые Google Play.

Как работают фильтры в Google Play

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

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

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

Вы можете использовать любую комбинацию доступных фильтров для своего приложения. Например, вы можете установить требование minSdkVersion "4" и установить smallScreens="false" в приложении, тогда при загрузке приложения в Google Play вы сможете ориентироваться только на европейские страны (операторов). Таким образом, фильтры Google Play предотвратят доступность приложения на любом устройстве, которое не соответствует всем трем этим требованиям.

Все ограничения фильтрации связаны с версией приложения и могут меняться в зависимости от версии. Например, если пользователь установил ваше приложение, а вы публикуете обновление, которое делает приложение невидимым для пользователя, он не увидит, что обновление доступно.

Фильтрация на сайте Google Play

Когда пользователи просматривают веб-сайт Google Play , они могут видеть все опубликованные приложения. Однако веб-сайт Google Play сравнивает требования к приложению для каждого из зарегистрированных устройств пользователя на предмет совместимости и разрешает им устанавливать приложение только в том случае, если оно совместимо с их устройством.

Фильтрация на основе манифеста приложения

Большинство фильтров активируются элементами файла манифеста приложения AndroidManifest.xml (хотя не все в файле манифеста может запускать фильтрацию). В таблице 1 перечислены элементы манифеста, которые следует использовать для запуска фильтрации, и объясняется, как работает фильтрация для каждого элемента.

Таблица 1. Элементы манифеста, запускающие фильтрацию в Google Play.

Элемент манифеста Имя фильтра Как это работает
<supports-screens> Размер экрана

Приложение указывает размеры экрана, которые оно способно поддерживать, путем установки атрибутов элемента <supports-screens> . Когда приложение публикуется, Google Play использует эти атрибуты, чтобы определить, показывать ли приложение пользователям, в зависимости от размеров экрана их устройств.

Как правило, Google Play предполагает, что платформа на устройстве может адаптировать меньшие макеты к экранам большего размера, но не может адаптировать макеты большего размера к экранам меньшего размера. Таким образом, если приложение заявляет о поддержке только «нормального» размера экрана, Google Play делает приложение доступным как для устройств с обычным, так и с большим экраном, но фильтрует приложение так, чтобы оно было недоступно для устройств с маленьким экраном.

Если приложение не объявляет атрибуты для <supports-screens> , Google Play использует для этих атрибутов значения по умолчанию, которые различаются в зависимости от уровня API. Конкретно:

  • Для приложений, которые устанавливают для android: minSdkVersion или android: targetSdkVersion значение 3 или ниже, сам элемент <supports-screens> не определен и атрибуты недоступны. В этом случае Google Play предполагает, что приложение предназначено для экранов обычного размера, и показывает его на устройствах с обычными или большими экранами.

  • Если для параметра android: minSdkVersion или android: targetSdkVersion установлено значение 4 или выше, значением по умолчанию для всех атрибутов является "true" . Таким образом, считается, что приложение по умолчанию поддерживает все размеры экрана.

Пример 1
Манифест объявляет <uses-sdk android:minSdkVersion="3"> и не включает элемент <supports-screens> . Результат : Google Play не покажет приложение пользователю устройства с маленьким экраном, но покажет его пользователям обычных устройств и устройств с большим экраном, если не будут применены другие фильтры.

Пример 2
Манифест объявляет <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"> и не включает элемент <supports-screens> . Результат : Google Play покажет приложение пользователям на всех устройствах, если не будут применены другие фильтры.

Пример 3
Манифест объявляет <uses-sdk android:minSdkVersion="4"> и не включает элемент <supports-screens> . Результат : Google Play покажет приложение всем пользователям, если не будут применены другие фильтры.

Дополнительные сведения о том, как объявить поддержку размеров экрана в вашем приложении, см. в разделах <supports-screens> и Supporting Multiple Screens .

<uses-configuration> Конфигурация устройства:
клавиатура, навигация, сенсорный экран

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

Пример 1
Манифест включает <uses-configuration android:reqFiveWayNav="true" /> , и пользователь ищет приложения на устройстве, не имеющем пятипозиционного навигационного элемента управления. Результат : Google Play не покажет приложение пользователю.

Пример 2
Манифест не включает элемент <uses-configuration> . Результат : Google Play покажет приложение всем пользователям, если не будут применены другие фильтры.

Дополнительные сведения см. в разделе <uses-configuration> .

<uses-feature> Особенности устройства
( name )

Приложению может потребоваться наличие определенных функций устройства. Эта функция была представлена ​​в Android 2.0 (уровень API 5).

Пример 1
Манифест включает <uses-feature android:name="android.hardware.sensor.light" /> , и пользователь ищет приложения на устройстве, не имеющем датчика освещенности. Результат : Google Play не покажет приложение пользователю.

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

Полную информацию см. в разделе <uses-feature> .

Фильтрация на основе подразумеваемых функций. В некоторых случаях Google Play интерпретирует разрешения, запрашиваемые через элементы <uses-permission> , как требования к функциям, эквивалентные тем, которые объявлены в элементах <uses-feature> . См. <uses-permission> ниже.

Версия OpenGL-ES
( openGlEsVersion )

Приложение может потребовать, чтобы устройство поддерживало определенную версию OpenGL-ES, используя атрибут <uses-feature android:openGlEsVersion="int"> .

Пример 1
Приложение запрашивает несколько версий OpenGL-ES, несколько раз указав openGlEsVersion в манифесте. Результат : Google Play предполагает, что приложению требуется самая высокая из указанных версий.

Пример 2
Приложение запрашивает OpenGL-ES версии 1.1, а пользователь ищет приложения на устройстве, поддерживающем OpenGL-ES версии 2.0. Результат : Google Play покажет приложение пользователю, если не будут применены другие фильтры. Если устройство сообщает, что оно поддерживает OpenGL-ES версии X , Google Play предполагает, что оно также поддерживает любую версию, предшествующую X.

Пример 3
Пользователь ищет приложения на устройстве, которое не сообщает версию OpenGL-ES (например, устройство под управлением Android 1.5 или более ранней версии). Результат : Google Play предполагает, что устройство поддерживает только OpenGL-ES 1.0. Google Play будет отображать только пользовательские приложения, в которых не указана openGlEsVersion , или приложения, в которых не указана версия OpenGL-ES выше 1.0.

Пример 4
В манифесте не указан openGlEsVersion . Результат : Google Play покажет приложение всем пользователям, если не будут применены другие фильтры.

Дополнительные сведения см. в разделе <uses-feature> .

<uses-library> Библиотеки программного обеспечения

Приложению может потребоваться наличие на устройстве определенных общих библиотек.

Пример 1
Приложению требуется библиотека com.google.android.maps , а пользователь ищет приложения на устройстве, на котором нет библиотеки com.google.android.maps . Результат : Google Play не покажет приложение пользователю.

Пример 2
Манифест не включает элемент <uses-library> . Результат : Google Play покажет приложение всем пользователям, если не будут применены другие фильтры.

Более подробную информацию см. в разделе <uses-library> .

<uses-permission>

Строго говоря, Google Play не осуществляет фильтрацию на основе элементов <uses-permission> . Однако он считывает элементы, чтобы определить, есть ли у приложения требования к аппаратным функциям, которые, возможно, не были должным образом объявлены в элементах <uses-feature> . Например, если приложение запрашивает разрешение CAMERA , но не объявляет элемент <uses-feature> для android.hardware.camera , Google Play считает, что приложению требуется камера и его не следует показывать пользователям, чьи устройства не поддерживают эту функцию. камера.

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

Список разрешений, которые подразумевают аппаратные функции, см. в документации по элементу <uses-feature> .

<uses-sdk> Минимальная версия платформы ( minSdkVersion )

Приложению может потребоваться минимальный уровень API.

Пример 1
Манифест включает <uses-sdk android:minSdkVersion="3"> , а приложение использует API-интерфейсы, представленные на уровне API 3. Пользователь ищет приложения на устройстве с уровнем API 2. Результат : Google Play не будет покажите приложение пользователю.

Пример 2
Манифест не включает minSdkVersion , а приложение использует API, представленные на уровне API 3. Пользователь ищет приложения на устройстве с уровнем API 2. Результат : Google Play предполагает, что minSdkVersion имеет значение «1» и что приложение совместимо со всеми версиями Android. Google Play показывает приложение пользователю и позволяет ему загрузить приложение. Приложение вылетает во время выполнения.

Поскольку вы хотите избежать второго сценария, мы рекомендуем всегда объявлять minSdkVersion . Подробности см. в разделе android:minSdkVersion .

Максимальная версия платформы ( maxSdkVersion )

Устарело. Android 2.1 и более поздних версий не проверяют и не применяют атрибут maxSdkVersion , а пакет SDK не будет компилироваться, если maxSdkVersion установлен в манифесте приложения. Для устройств, уже скомпилированных с помощью maxSdkVersion , Google Play будет учитывать его и использовать для фильтрации.

Объявлять maxSdkVersion не рекомендуется. Подробности см. в разделе android:maxSdkVersion .

Расширенные фильтры манифеста

Помимо элементов манифеста из таблицы 1 , Google Play также может фильтровать приложения на основе расширенных элементов манифеста из таблицы 2.

Эти элементы манифеста и фильтрация, которую они запускают, предназначены только для исключительных случаев использования. Они предназначены для определенных типов высокопроизводительных игр и подобных приложений, требующих строгого контроля за распространением приложений. Большинству приложений никогда не следует использовать эти фильтры .

Таблица 2. Расширенные элементы манифеста для фильтрации Google Play.

Элемент манифеста Краткое содержание
<compatible-screens>

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

Внимание: Обычно этот элемент манифеста использовать не следует . Использование этого элемента может значительно сократить потенциальную базу пользователей вашего приложения за счет исключения всех комбинаций размера и плотности экрана, которые вы не указали. Вместо этого вам следует использовать элемент манифеста <supports-screens> (описанный выше в таблице 1 ), чтобы включить режим совместимости экрана для конфигураций экрана, которые вы не учли с альтернативными ресурсами.

<supports-gl-texture>

Google Play фильтрует приложение, если только один или несколько форматов сжатия текстур GL, поддерживаемых приложением, также не поддерживаются устройством.

Другие фильтры

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

Таблица 3. Характеристики приложения и публикации, влияющие на фильтрацию в Google Play.

Имя фильтра Как это работает
Статус публикации

Только опубликованные приложения будут отображаться в результатах поиска и просмотрах в Google Play.

Даже если приложение не опубликовано, его можно установить, если пользователи видят его в области «Загрузки» среди приобретенных, установленных или недавно удаленных приложений.

Если приложение было приостановлено, пользователи не смогут переустановить или обновить его, даже если оно отображается в их загрузках.

Статус цены

Не все пользователи видят платные приложения. Чтобы показывать платные приложения, устройство должно работать под управлением Android 1.1 или более поздней версии и находиться в стране, где доступны платные приложения. Если в устройстве есть SIM-карта, оператор SIM-карты определяет, доступны ли платные приложения. Если в устройстве нет SIM-карты, IP-адрес устройства используется для определения того, находится ли устройство в стране, где доступны платные приложения.

Страновой таргетинг

Загружая свое приложение в Google Play, вы можете выбрать страны, в которых оно будет распространяться, в разделе «Цены и распространение» . После этого приложение будет доступно пользователям только в выбранных вами странах.

Архитектура ЦП (ABI)

Приложение, включающее собственные библиотеки, ориентированные на определенную архитектуру ЦП (например, ARM EABI v7 или x86), отображается только на устройствах, поддерживающих эту архитектуру. Подробные сведения о NDK и использовании собственных библиотек см. в разделе Что такое Android NDK?

Приложения, защищенные от копирования

Google Play больше не поддерживает функцию защиты от копирования в Play Console и не фильтрует приложения на ее основе. Чтобы защитить свое приложение, используйте вместо этого лицензирование приложений . Дополнительную информацию см. в разделе Замена защиты от копирования .

Публикация нескольких APK с разными фильтрами

Некоторые специальные фильтры Google Play позволяют публиковать несколько APK-файлов для одного и того же приложения, чтобы предоставлять разные APK-файлы для разных конфигураций устройств. Например, если вы создаете видеоигру, в которой используются высококачественные графические ресурсы, вам может потребоваться создать два APK-файла, каждый из которых поддерживает разные форматы сжатия текстур. Таким образом, вы можете уменьшить размер APK-файла, включив в него только те текстуры, которые необходимы для каждой конфигурации устройства. В зависимости от поддержки каждого устройства для ваших форматов сжатия текстуры Google Play предоставит ему APK, который вы объявили, чтобы поддержать это устройство.

В настоящее время Google Play позволяет вам публиковать несколько APK для одного и того же приложения только тогда, когда каждый APK предоставляет различные фильтры на основе следующих конфигураций:

  • Форматы сжатия текстуры OpenGL

    Используя элемент <supports-gl-texture> .

  • Размер экрана (и, необязательно, плотность экрана)

    Используя элемент <supports-screens> или <compatible-screens> .

  • API Уровень

    Используя элемент <uses-sdk> .

  • Архитектура процессора (ABI)

    Включив нативные библиотеки, построенные с Android NDK , которые нацелены на определенную архитектуру процессора (например, ARM EABI V7 или X86).

Все остальные фильтры по -прежнему работают так же, как обычно, но эти четыре являются единственными фильтрами, которые могут отличить один APK от другого в одном и том же списке приложений в Google Play. Например, вы не можете опубликовать несколько APK для одного и того же приложения, если APK отличаются только в зависимости от того, имеет ли устройство камера.

Осторожность: публикация нескольких APK для одного и того же приложения считается расширенной функцией, и большинство приложений должны публиковать только один APK, который поддерживает широкий спектр конфигураций устройства . Публикация нескольких APK требует, чтобы вы следовали конкретным правилам в ваших фильтрах и обращаете дополнительное внимание на коды версий для каждого APK, чтобы обеспечить правильные пути обновления для каждой конфигурации.

Если вам нужна дополнительная информация о том, как опубликовать несколько APK в Google Play, прочитайте несколько APK -поддержку .

См. также

  1. Совместимость Android
  2. Многочисленная поддержка APK