Targeting per dispositivo (beta)

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:

  1. Definisci i gruppi di dispositivi in un file XML.
  2. Specifica quali parti del bundle devono essere assegnate a quali gruppi di dispositivi.
  3. [Facoltativo] Testa la configurazione a livello locale.
  4. 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.

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"):

    Pagina di Pixel 4a nel catalogo dei dispositivi

    Pagina di Pixel 4a nel catalogo dei dispositivi

  • 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.