Таргетинг на устройства (бета)

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

Вы можете настроить таргетинг на такие свойства устройства, как:

  • Модель устройства
  • Оперативная память устройства
  • Возможности системы
  • Система на кристалле (для устройств с уровнем API не ниже 31)

Обзор необходимых шагов

Чтобы включить таргетинг на устройства, необходимо выполнить следующие действия:

  1. Определите группы устройств в XML-файле.
  2. Укажите, какие части вашего пакета должны относиться к каким группам устройств.
  3. [Необязательно] Проверьте свою конфигурацию локально.
  4. Загрузите свой пакет (содержащий XML-файл) в Google Play.

Проверьте версию плагина Android Gradle

Чтобы использовать таргетинг на устройства, убедитесь, что версия вашего плагина Android Gradle (AGP) не ниже 8.10.0-alpha01. Он входит в состав Android Studio Meerkat 2 и выше.

Включите таргетинг на устройства в плагине Android Gradle

Таргетинг на устройства должен быть явно включен в вашем файле gradle.properties :

android.experimental.enableDeviceTargetingConfigApi=true

Создайте XML-файл конфигурации таргетинга на устройство.

Файл конфигурации целевого устройства — это XML-файл, в котором вы определяете свои настраиваемые группы устройств. Например, вы можете определить группу устройств с именем high_ram , которая будет содержать все устройства с объемом оперативной памяти не менее 8 ГБ:

<config:device-targeting-config
    xmlns:config="http://schemas.android.com/apk/config">

    <config:device-group name="high_ram">
        <config:device-selector ram-min-bytes="8000000000"/>
    </config:device-group>

</config:device-targeting-config>

Группа устройств состоит из 5 селекторов устройств . Устройство включается в группу устройств, если оно удовлетворяет любому из ее селекторов устройств.

Селектор устройств может иметь одно или несколько свойств устройства . Устройство выбирается, если оно соответствует всем свойствам устройства селектора.

Доступные свойства устройства

  • device_ram : Требования к оперативной памяти устройства
    • min_bytes ( включительно) : Минимально необходимая оперативная память (в байтах)
    • max_bytes ( эксклюзивный) : Максимально необходимый объем оперативной памяти (в байтах).
  • include_device_ids : модели устройств, которые будут включены в этот селектор (максимум 10 000 идентификаторов устройств на группу) . Это свойство выполняется, если устройство соответствует любому идентификатору устройства в списке.
    • build_brand : Производитель устройства.
    • build_device : код модели устройства.
  • исключенные_device_ids : модели устройств, которые будут исключены из этого селектора (максимум 10 000 идентификаторов устройств на группу) . Это свойство выполняется, если устройство не соответствует ни одному идентификатору устройства в списке.
    • build_brand : Производитель устройства.
    • build_device : код модели устройства.
  • require_system_features : функции, которые устройство должно включить в этот селектор (максимум 100 функций в группе) . Чтобы соответствовать этому свойству, устройство должно иметь все системные функции из этого списка.

    Справочник по функциям системы

    • имя : системная функция
  • запрещенные_системные_функции : функции, которые устройство не должно включать в этот селектор (максимум 100 функций в группе) . Если устройство имеет какие-либо системные функции из этого списка, оно не удовлетворяет этому свойству.

    Справочник по функциям системы

    • имя : системная функция
  • system-on-chip : система на чипах, которая будет включена в этот селектор. Чтобы обеспечить соответствие этому свойству, устройству необходим любой чип из этого списка. Система на чипах может быть ориентирована только на устройства с уровнем API не ниже 31 .

Включение нескольких свойств в один селектор создает логическое «И», например:

  <config:device-selector ram-min-bytes="7000000000">
      <config:included-device-id brand="google" device="flame"/>
  </config:device-selector>

создаст условие для всех устройств с > 7 ГБ ОЗУ И это Pixel 4, также записанное следующим образом:

Если вам нужно условие ИЛИ, создайте отдельные селекторы в одной группе устройств, например:

  <config:device-selector ram-min-bytes="7000000000"/>
  <config:device-selector>
        <config:included-device-id brand="google" device="flame"/>
  </config:device-selector>

создаст условие для всех устройств с > 7 ГБ ОЗУ ИЛИ Pixel 4, также записанное следующим образом:

Вот пример, показывающий все возможные свойства устройства:

<config:device-targeting-config
    xmlns:config="http://schemas.android.com/apk/config">

    <config:device-group name="myCustomGroup1">
      <config:device-selector ram-min-bytes="8000000000">
        <config:included-device-id brand="google" device="redfin"/>
        <config:included-device-id brand="google" device="sailfish"/>
        <config:included-device-id brand="good-brand"/>
        <config:excluded-device-id brand="google" device="caiman"/>
        <config:system-on-chip manufacturer="Sinclair" model="ZX80"/>
        <config:system-on-chip manufacturer="Commodore" model="C64"/>
      </config:device-selector>
      <config:device-selector ram-min-bytes="16000000000"/>
    </config:device-group>

    <config:device-group name="myCustomGroup2">
      <config:device-selector ram-min-bytes="4000000000" ram-max-bytes="8000000000">
        <config:required-system-feature name="android.hardware.bluetooth"/>
        <config:required-system-feature name="android.hardware.location"/>
        <config:forbidden-system-feature name="android.hardware.camera"/>
        <config:forbidden-system-feature name="mindcontrol.laser"/>
      </config:device-selector>
    </config:device-group>

</config:device-targeting-config>

Официальный производитель устройства и коды моделей устройств

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

  • Проверка отдельных устройств с помощью каталога устройств и поиск производителя и кода модели в местах, как показано в примере ниже (для Google Pixel 4a производителем является «Google», а код модели — «sunfish»):

    Страница пикселя 4а в каталоге устройств

    Страница пикселя 4а в каталоге устройств

  • Загрузка CSV-файла с поддерживаемыми устройствами и использование кода производителя и модели для полей build_brand и build_device соответственно.

Включите файл конфигурации таргетинга на ваше устройство в пакет приложений.

Добавьте следующее в файл build.gradle вашего основного модуля:

android {
  ...
  bundle {
    deviceTargetingConfig = file('device_targeting_config.xml')
    deviceGroup {
      enableSplit = true   // split bundle by #group
      defaultGroup = "other"  // group used for standalone APKs
    }
  }
  ...
}

device_targeting_config.xml — это путь к вашему файлу конфигурации относительно основного модуля. Это гарантирует, что ваш файл конфигурации будет упакован в пакет приложения.

Предложение deviceGroup гарантирует, что APK-файлы, созданные из вашего пакета, будут разделены по группам устройств.

Таргетинг на устройства для предоставления функций Play

Чтобы использовать таргетинг на устройства с доставкой функций Play, ознакомьтесь с документацией по условной доставке .