Il targeting per dispositivo ti consente di avere un controllo più preciso sulle parti del tuo app bundle che vengono pubblicate su dispositivi specifici. Ad esempio, puoi assicurarti che un asset di grandi dimensioni venga pubblicato solo su dispositivi con una RAM elevata oppure puoi pubblicare versioni diverse di un asset su dispositivi diversi.
Puoi scegliere come target le proprietà del dispositivo, ad esempio:
- Modello del dispositivo
- RAM del dispositivo
- Funzionalità di sistema
- System on chip (per i dispositivi con livello API almeno 31)
Panoramica dei passaggi obbligatori
Per attivare il targeting per dispositivo, sono necessari i seguenti passaggi:
- Definisci i gruppi di dispositivi in un file XML.
- Specifica quali parti del bundle devono essere assegnate a quali gruppi di dispositivi.
- [Facoltativo] Testa la configurazione a livello locale.
- Carica il bundle (contenente il file XML) su Google Play.
Controllare la versione del plug-in Android per Gradle
Per utilizzare il targeting per dispositivo, assicurati che la versione del plug-in Android per Gradle (AGP) sia almeno 8.10.0-alpha01. È incluso in Android Studio Meerkat 2 e versioni successive.
Attivare il targeting per dispositivo nel plug-in Android per Gradle
Il targeting per dispositivo deve essere attivato esplicitamente nel file gradle.properties
:
android.experimental.enableDeviceTargetingConfigApi=true
Creare un file XML di configurazione del targeting per dispositivo
Il file di configurazione del targeting per dispositivo è un file XML in cui definisci i gruppi di dispositivi personalizzati. Ad esempio, puoi definire un gruppo di dispositivi chiamato
high_ram
contenente tutti i dispositivi con almeno 8 GB di 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>
Un gruppo di dispositivi è composto da un massimo di 5 selettori di dispositivi. Un dispositivo viene incluso in un gruppo di dispositivi se soddisfa uno dei relativi selettori.
Un selettore di dispositivi può avere una o più proprietà di dispositivo. Un dispositivo viene selezionato se corrisponde a tutte le proprietà del dispositivo del selettore.
Proprietà dei dispositivi disponibili
- device_ram: requisiti della RAM del dispositivo
- min_bytes (incluso): RAM minima richiesta (in byte)
- max_bytes (esclusivo): RAM massima richiesta (in byte)
- included_device_ids: i modelli di dispositivi da includere in questo selettore
(massimo 10000 device_id per gruppo). Questa proprietà è soddisfatta se il dispositivo corrisponde a qualsiasi device_id nell'elenco.
- build_brand: produttore del dispositivo
- build_device: codice del modello di dispositivo
- excluded_device_ids: i modelli di dispositivi da escludere in questo selettore
(massimo 10000 device_id per gruppo). Questa proprietà è soddisfatta se il dispositivo non corrisponde a nessun device_id nell'elenco.
- build_brand: produttore del dispositivo
- build_device: codice del modello di dispositivo
required_system_features: funzionalità che un dispositivo deve avere per essere incluso da questo selettore (massimo 100 funzionalità per gruppo). Un dispositivo deve avere tutte le funzionalità di sistema in questo elenco per soddisfare questa proprietà.
Riferimento alle funzionalità di sistema
- name: una funzionalità di sistema
forbidden_system_features: funzionalità che un dispositivo non deve avere per essere incluso da questo selettore (massimo 100 funzionalità per gruppo). Se un dispositivo possiede una delle funzionalità di sistema in questo elenco, non soddisfa questa proprietà.
Riferimento alle funzionalità di sistema
- name: una funzionalità di sistema
system-on-chip: i system on chip da includere in questo selettore. Per soddisfare questa proprietà, un dispositivo deve avere uno dei chip in questo elenco. È possibile scegliere come target System on Chip solo sui dispositivi con livello API almeno 31.
- manufacturer: Produttore del system on chip
- model: modello di system on chip
L'inclusione di più proprietà in un singolo selettore crea un AND logico, ad esempio:
<config:device-selector ram-min-bytes="7000000000">
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
verrà creata la condizione per tutti i dispositivi con più di 7 GB di RAM E che si tratta di un Pixel 4, indicata anche come segue:
Se vuoi una condizione OR, crea selettori separati in un unico gruppo di dispositivi, ad esempio:
<config:device-selector ram-min-bytes="7000000000"/>
<config:device-selector>
<config:included-device-id brand="google" device="flame"/>
</config:device-selector>
creerà la condizione per tutti i dispositivi con più di 7 GB di RAM OPPURE è un Pixel 4, indicata anche come segue:
Ecco un esempio che mostra tutte le possibili proprietà del 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>
Codici ufficiali del produttore e del modello del dispositivo
Puoi trovare la formattazione corretta per il produttore e il codice modello del dispositivo utilizzando il Catalogo dei dispositivi su Google Play Console:
Controllare i singoli dispositivi utilizzando il Catalogo dei dispositivi e trovare il codice del produttore e del modello nelle posizioni mostrate nell'esempio seguente (per un Google Pixel 4a, il produttore è "Google" e il codice del modello è "sunfish"):
Scaricare un file CSV dei dispositivi supportati e utilizzare Manufacturer e Model Code per i campi build_brand e build_device, rispettivamente.
Includi il file di configurazione del targeting per dispositivo nell'app bundle
Aggiungi quanto segue al file build.gradle
del modulo principale:
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
è il percorso del file di configurazione rispetto al modulo principale. In questo modo, il file di configurazione viene pacchettizzato con l'app bundle.
La clausola deviceGroup
garantisce che gli APK generati dal tuo bundle vengano suddivisi in base ai gruppi di dispositivi.
Targeting per dispositivo per Play Feature Delivery
Per utilizzare il targeting per dispositivo con Play Feature Delivery, consulta la documentazione relativa alla pubblicazione condizionale.