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

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

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

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

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

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

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

Плагин Android Gradle против плагина Play Unity

Точные необходимые шаги различаются в зависимости от того, создаете ли вы свое приложение с помощью Android Gradle Plugin или Play Unity Plugin. Перед продолжением выберите настройку сборки:

Плагин

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

Чтобы использовать таргетинг на устройства, убедитесь, что версия вашего Android Gradle Plugin (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 ( не включительно) : максимальный требуемый объем оперативной памяти (в байтах)
  • included_device_ids : Модели устройств, которые будут включены в этот селектор (макс. 10000 device_id на группу) . Это свойство выполняется, если устройство соответствует любому device_id в списке.
    • build_brand : Производитель устройства
    • build_device : Код модели устройства
  • exclude_device_ids : Модели устройств, которые следует исключить в этом селекторе (макс. 10000 device_id на группу) . Это свойство выполняется, если устройство не соответствует ни одному device_id в списке.
    • build_brand : Производитель устройства
    • build_device : Код модели устройства
  • required_system_features : Функции, которые должны быть у устройства, чтобы быть включенными в этот селектор (макс. 100 функций на группу) . Устройство должно иметь все системные функции из этого списка, чтобы удовлетворять этому свойству.

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

    • имя : Системная функция
  • denied_system_features : Функции, которые устройство не должно включать в этот селектор (максимум 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 Console, выполнив одно из следующих действий:

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

    страница pixel 4a в каталоге устройств

    страница pixel 4a в каталоге устройств

  • Загрузка 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 Feature Delivery, см. документацию по условной доставке .

Таргетинг устройств для Play Asset Delivery

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

Таргетинг на устройства для доставки модели ИИ на устройства

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

Сообщить об ошибках

Сообщайте о любых ошибках в общедоступной системе отслеживания ошибок .