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

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

Вы можете настроить таргетинг на следующие свойства устройств:

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

Обзор необходимых действий

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

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

Плагин Android Gradle и плагин Play Unity

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

Проверьте версию плагина 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>

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

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

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

  • device_ram – требования к ОЗУ устройства.
    • min_bytes (включительно) – минимальный объем ОЗУ в байтах.
    • max_bytes (исключающий) – максимальный требуемый объем ОЗУ (в байтах).
  • included_device_ids – модели устройств, которые нужно включить в этот селектор (не более 10 000 идентификаторов устройств на группу). Это свойство выполняется, если устройство соответствует любому идентификатору device_id в списке.
    • build_brand – производитель устройства.
    • build_device – код модели устройства.
  • excluded_device_ids – модели устройств, которые нужно исключить из этого селектора (не более 10 000 идентификаторов устройств на группу). Это свойство выполняется, если устройство не соответствует ни одному идентификатору device_id в списке.
    • build_brand – производитель устройства.
    • build_device – код модели устройства.
  • required_system_features – функции, которые должны быть на устройстве, чтобы оно было включено в селектор (не более 100 функций на группу). Чтобы устройство соответствовало этому свойству, на нем должны быть все системные функции из этого списка.

    Справочник по функциям

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

    Справочник по функциям

    • name – системная функция.
  • 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-файл со списком поддерживаемых устройств и укажите значения из столбцов Manufacturer и Model Code в полях build_brand и build_device соответственно.

Добавьте файл конфигурации таргетинга на устройства в набор App Bundle

Добавьте в файл 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 – путь к файлу конфигурации относительно основного модуля. Это гарантирует, что файл конфигурации будет упакован вместе с набором App Bundle.

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

Таргетинг на устройства в Play Feature Delivery

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

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

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

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

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

Как сообщить об ошибке

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