Segmentación por dispositivo (beta)

La segmentación por dispositivo te brinda un control más detallado sobre qué partes del paquete de aplicación se entregan a dispositivos específicos. Por ejemplo, puedes asegurarte de que un recurso grande solo se entregue a dispositivos con mucha RAM, o bien puedes entregar diferentes versiones de un recurso a diferentes dispositivos.

Puedes segmentar tus anuncios para propiedades de dispositivos, como las siguientes:

  • Modelo del dispositivo
  • RAM del dispositivo
  • Funciones del sistema
  • Sistema en chip (para dispositivos con un nivel de API de al menos 31)

Descripción general de los pasos obligatorios

Para habilitar la segmentación por dispositivo, sigue estos pasos:

  1. Define tus grupos de dispositivos en un archivo en formato XML.
  2. Especifica qué partes del paquete deben ir a qué grupos de dispositivos.
  3. [Opcional] Prueba la configuración de forma local.
  4. Sube tu paquete (que contiene el archivo en formato XML) a Google Play.

Cómo verificar la versión del complemento de Android para Gradle

Para usar la segmentación de dispositivos, asegúrate de que la versión del complemento de Android para Gradle (AGP) sea de al menos 8.10.0-alpha01. Se empaqueta con Android Studio Meerkat 2 y versiones posteriores.

Habilita la segmentación por dispositivo en el complemento de Android para Gradle

La segmentación por dispositivo debe estar habilitada de forma explícita en tu archivo gradle.properties:

android.experimental.enableDeviceTargetingConfigApi=true

Crea un archivo en formato XML de configuración de segmentación por dispositivo

El archivo de configuración de segmentación de dispositivos es un archivo en formato XML en el que defines tus grupos de dispositivos personalizados. Por ejemplo, puedes definir un grupo de dispositivos llamado high_ram que contenga todos los dispositivos con al 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>

Un grupo de dispositivos se compone de hasta 5 selectores de dispositivos. Un dispositivo se incluye en un grupo de dispositivos si satisface alguno de sus selectores de dispositivos.

Un selector de dispositivos puede tener una o más propiedades de dispositivo. Se selecciona un dispositivo si coincide con todas las propiedades del dispositivo del selector.

Propiedades de dispositivos disponibles

  • device_ram: Requisitos de RAM del dispositivo
    • min_bytes (inclusive): RAM mínima requerida (en bytes)
    • max_bytes (exclusive): RAM máxima requerida (en bytes)
  • included_device_ids: Modelos de dispositivos que se incluirán en este selector (10,000 device_ids por grupo como máximo). Esta propiedad se cumple si el dispositivo coincide con cualquier device_id de la lista.
    • build_brand: Es el fabricante del dispositivo.
    • build_device: Código del modelo del dispositivo
  • excluded_device_ids: Modelos de dispositivos que se excluirán en este selector (10,000 device_ids por grupo como máximo). Esta propiedad se cumple si el dispositivo no coincide con ningún device_id de la lista.
    • build_brand: Es el fabricante del dispositivo.
    • build_device: Código del modelo del dispositivo
  • required_system_features: Funciones que un dispositivo debe tener para que se incluya en este selector (100 funciones por grupo como máximo). Un dispositivo debe tener todas las funciones del sistema de esta lista para satisfacer esta propiedad.

    Referencia de funciones del sistema

    • name: Es una función del sistema.
  • forbidden_system_features: Funciones que un dispositivo no debe tener para que se incluya en este selector (100 funciones por grupo como máximo). Si un dispositivo tiene alguna de las funciones del sistema que se detallan en esta lista, no satisface esta propiedad.

    Referencia de funciones del sistema

    • name: Es una función del sistema.
  • system-on-chip: Es el sistema en chip que se incluirá en este selector. Un dispositivo debe tener cualquier chip de esta lista para satisfacer esta propiedad. El sistema en chips solo se puede orientar a dispositivos con un nivel de API de al menos 31.

Si incluyes varias propiedades en un solo selector, se crea un operador lógico Y, por ejemplo:

  <config:device-selector ram-min-bytes="7000000000">
      <config:included-device-id brand="google" device="flame"/>
  </config:device-selector>

Esto creará la condición para todos los dispositivos que superen los 7 GB de RAM Y que sean un Pixel 4, lo que también se puede escribir de la siguiente manera:

Si quieres aplicar una condición O, crea selectores independientes en un solo grupo de dispositivos, por ejemplo:

  <config:device-selector ram-min-bytes="7000000000"/>
  <config:device-selector>
        <config:included-device-id brand="google" device="flame"/>
  </config:device-selector>

Esto creará la condición para todos los dispositivos que superen los 7 GB de RAM O que sean un Pixel 4, lo que también se puede escribir de la siguiente manera:

Este es un ejemplo que muestra todas las propiedades de dispositivos posibles:

<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 oficiales de fabricante y modelo de dispositivos

Puedes encontrar el formato correcto para el fabricante y el código del modelo del dispositivo en el catálogo de dispositivos de Google Play Console optando por una de las siguientes maneras:

  • Inspecciona los dispositivos individuales mediante el catálogo de dispositivos y encuentra el fabricante y el código del modelo en las ubicaciones como se muestra en el siguiente ejemplo (para un Google Pixel 4a, el fabricante es "Google" y el código del modelo es "sunfish"):

    Página del Pixel 4a en el catálogo de dispositivos

    Página del Pixel 4a en el catálogo de dispositivos

  • Descarga un archivo CSV de dispositivos compatibles y usa el Fabricante y el Código del modelo para los campos build_brand y build_device, respectivamente.

Cómo incluir el archivo de configuración de segmentación por dispositivo en el paquete de aplicación

Agrega lo siguiente al archivo build.gradle de tu 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 es la ruta de acceso de tu archivo de configuración en relación con el módulo principal. Esto garantiza que tu archivo de configuración se empaquete con el paquete de la app.

La cláusula deviceGroup garantiza que los APKs generados a partir de tu paquete se dividan por grupos de dispositivos.

Segmentación por dispositivo para Play Feature Delivery

Para usar la segmentación por dispositivo con Play Feature Delivery, consulta la documentación sobre la publicación condicional.