A segmentação por dispositivo oferece um controle mais preciso sobre quais partes do pacote de apps são entregues a dispositivos específicos. Por exemplo, você pode garantir que um recurso grande seja entregue apenas para dispositivos com RAM alta ou enviar diferentes versões de um recurso para dispositivos diferentes.
É possível segmentar propriedades do dispositivo, como:
- Modelo do dispositivo
- RAM do dispositivo
- Recursos do sistema
- System on chip (para dispositivos com nível 31 da API ou mais recente)
Visão geral das etapas necessárias
Siga as etapas abaixo para ativar a segmentação por dispositivo:
- Defina os grupos de dispositivos em um arquivo XML.
- Especifique quais partes do pacote devem ser enviadas para quais grupos de dispositivos.
- [Opcional] Teste a configuração localmente.
- Faça o upload do pacote (que contém o arquivo XML) no Google Play.
Verificar a versão do Plug-in do Android para Gradle
Para usar a segmentação por dispositivo, verifique se a versão do Plug-in do Android para Gradle (AGP) é pelo menos 8.10.0-alpha01. Ele é empacotado com o Android Studio Meerkat 2 e versões mais recentes.
Ativar a segmentação de dispositivos no Plug-in do Android para Gradle
A segmentação por dispositivo precisa ser ativada explicitamente no arquivo gradle.properties
:
android.experimental.enableDeviceTargetingConfigApi=true
Criar um arquivo XML de configuração de segmentação por dispositivo
O arquivo de configuração de segmentação por dispositivo é um arquivo XML em que você define seus
grupos de dispositivos personalizados. Por exemplo, você pode definir um grupo de dispositivos chamado
high_ram
que contenha todos os dispositivos com pelo menos 8 GB de RAM:
<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>
Um grupo de dispositivos é composto por até cinco seletores de dispositivo. Um dispositivo é incluído em um grupo se ele atende a qualquer um dos seletores.
Um seletor de dispositivo pode ter uma ou mais propriedades de dispositivo. Um dispositivo é selecionado se corresponder a todas as propriedades do dispositivo do seletor.
Propriedades de dispositivo disponíveis
- device_ram: requisitos de RAM do dispositivo
- min_bytes (inclusivo): mínimo de RAM necessária (em bytes).
- max_bytes (exclusivo): máximo de RAM necessária (em bytes).
- included_device_ids: os modelos de dispositivo que serão incluídos nesse seletor
(máximo de 10.000 device_ids por grupo). Essa propriedade é atendida se o
dispositivo corresponder a qualquer device_id na lista.
- build_brand: fabricante do dispositivo.
- build_device: código do modelo do dispositivo.
- excluded_device_ids: modelos de dispositivo a serem excluídos neste seletor
(máximo de 10.000 device_ids por grupo). Essa propriedade é atendida se o
dispositivo não corresponder a nenhum device_id na lista.
- build_brand: fabricante do dispositivo.
- build_device: código do modelo do dispositivo.
required_system_features: recursos que um dispositivo precisa ter para ser incluído por esse seletor (máximo de 100 recursos por grupo). Um dispositivo precisa ter todos os recursos do sistema nessa lista para atender a essa propriedade.
Referência de recursos do sistema
- name: um recurso do sistema.
forbidden_system_features: recursos que um dispositivo não pode ter para ser incluído por esse seletor (máximo de 100 recursos por grupo). Se um dispositivo tiver algum dos recursos do sistema nesta lista, ele não atenderá a essa propriedade.
Referência de recursos do sistema
- name: um recurso do sistema.
system-on-chip: system on chips a serem incluídos neste seletor. Um dispositivo precisa ter qualquer chip dessa lista para atender a essa propriedade. O sistema em chips só pode ser segmentado em dispositivos com nível 31 da API, no mínimo.
- manufacturer: fabricante do system on chip
- model: modelo do sistema em chip
A inclusão de várias propriedades em um único seletor cria uma lógica AND, por exemplo:
<config:device-selector ram-min-bytes="7000000000">
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
cria a condição para todos os dispositivos com mais de 7 GB de RAM e (AND) é um Pixel 4, também escrito da seguinte forma:
Se você quiser uma condição OR, crie seletores separados em um único grupo de dispositivos, por exemplo:
<config:device-selector ram-min-bytes="7000000000"/>
<config:device-selector>
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
cria a condição para todos os dispositivos com mais de 7 GB de RAM ou (OR) é um Pixel 4, também escrito da seguinte forma:
Confira um exemplo que mostra todas as propriedades possíveis do dispositivo:
<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>
Códigos oficiais do fabricante e do modelo do dispositivo
Para encontrar a formatação correta do fabricante do dispositivo e o código do modelo, use o catálogo de dispositivos no Google Play Console de uma das seguintes maneiras:
Inspeção dos dispositivos individuais usando o catálogo de dispositivos e encontrando o código do fabricante e do modelo nos locais, conforme mostrado no exemplo abaixo. No caso de um Google Pixel 4a, o fabricante é "Google" e o código do modelo é "sunfish".
Faça o download de um CSV dos dispositivos com suporte e use o código do fabricante e do modelo para os campos build_brand e build_device, respectivamente.
Incluir o arquivo de configuração de segmentação por dispositivo no pacote do app
Adicione o seguinte ao arquivo build.gradle
do módulo principal:
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
é o caminho do arquivo de configuração em relação ao
módulo principal. Isso garante que o arquivo de configuração seja empacotado com o
pacote de apps.
A cláusula deviceGroup
garante que os APKs gerados no pacote sejam
divididos por grupos de dispositivos.
Segmentação por dispositivo para o Play Feature Delivery
Para usar a segmentação por dispositivo com o envio de recursos do Google Play, consulte a documentação sobre o envio condicional.