Таргетинг на устройства позволяет точнее контролировать, какие части набора App Bundle будут доставляться на определенные устройства. Например, вы можете сделать так, чтобы большой объект доставлялся только на устройства с большим объемом ОЗУ, или доставлять разные версии объекта на разные устройства.
Вы можете настроить таргетинг на следующие свойства устройств:
- Модель устройства
- ОЗУ устройства
- Системные функции
- Процессор (для устройств с уровнем API не ниже 31)
Обзор необходимых действий
Чтобы включить таргетинг на устройства, выполните следующие действия:
- Определите группы устройств в файле конфигурации таргетинга на устройства.
- Укажите, какие части набора должны быть доступны для определенных групп устройств.
- При необходимости протестируйте конфигурацию локально.
- Загрузите набор (содержащий файл конфигурации) в 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.
- производитель – производитель процессоров.
- model: процессор.
Если в одном селекторе указано несколько свойств, они объединяются логическим оператором И. Пример:
<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).


Скачайте 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 для ИИ на устройстве, ознакомьтесь с документацией по пакетам ИИ.
Как сообщить об ошибке
Сообщайте об ошибках в общедоступной системе отслеживания ошибок.