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