Descripción general de la compatibilidad de dispositivos

Android está diseñado para ejecutarse en muchos dispositivos diferentes, como teléfonos, tabletas y televisores. La variedad de dispositivos brinda un gran potencial público de tu app. Para que tu app tenga éxito en todos los dispositivos, toleran la variabilidad de las funciones y proporcionan una interfaz de usuario flexible que se adapta a diferentes configuraciones de pantalla.

Para ayudar con la compatibilidad de dispositivos, Android proporciona un framework de app dinámico en el que puedes proporcionar recursos de app específicos de configuración en archivos estáticos, como diferentes diseños XML para distintos tamaños de pantalla. Android, luego carga los recursos adecuados según la configuración actual del dispositivo. Con previstos para el diseño de tu aplicación y los recursos adicionales de la aplicación, puedes publicar un un único paquete de aplicación (APK) que optimiza la experiencia del usuario en varios de dispositivos.

Sin embargo, si es necesario, puedes especificar los requisitos de las funciones de tu app y controlar qué tipos de dispositivos pueden instalarla desde Google Play Store. En este documento, se explica cómo puedes controlar qué dispositivos tienen acceso a tus y cómo prepararlas para llegar al público adecuado.

¿Qué significa "compatibilidad"?

En lo que respecta al desarrollo de Android, existen dos tipos de compatibilidad: compatibilidad de dispositivos y compatibilidad de apps.

Debido a que Android es un proyecto de código abierto, cualquier fabricante de hardware puede compilar un dispositivo que ejecute el sistema operativo Android. Pero un dispositivo es "Compatible con Android" solo si puede ejecutar correctamente las aplicaciones escritas para el Entorno de ejecución de Android El Programa de compatibilidad de Android define los detalles exactos del entorno de ejecución de Android. Cada dispositivo debe aprobar el Conjunto de pruebas de compatibilidad (CTS) para que se considere compatible.

Como desarrollador de aplicaciones, no tienes que preocuparte por si el dispositivo Compatible con Android, porque solo los dispositivos que lo son incluyen Google Play Store Por lo tanto, si un usuario instala tu app desde Google Play Store, estén usando un dispositivo compatible con Android.

Sin embargo, debes considerar si tu app es compatible con cada posible configuración del dispositivo. Debido a que Android se ejecuta en una amplia gama de configuraciones de dispositivos, algunas funciones no están disponibles en todos los dispositivos. Por ejemplo, es posible que algunos dispositivos no incluyan sensor de brújula. Si la funcionalidad principal de tu app requiere un sensor de brújula, entonces tu aplicación solo es compatible con dispositivos que incluyen esa función.

Controla la disponibilidad de tu app para los dispositivos

Android admite una variedad de funciones que tu app puede aprovechar a través de la plataforma. APIs Algunas funciones se basan en hardware, como un sensor de brújula, otras se basan en software, como los widgets de apps, y otras dependen de la versión de la plataforma. No todos los dispositivos son compatibles con todas las funciones, por lo que es posible que debas controlar la disponibilidad de tu app para los dispositivos según las funciones que requiera tu app.

Para lograr la mayor base de usuarios posible para tu app, admite tantas configuraciones de dispositivos como sea posible con un solo APK o AAB. En la mayoría de las situaciones, puedes hacerlo inhabilitando las funciones opcionales en tiempo de ejecución y proporcionando recursos de la app con alternativas para diferentes configuraciones, como distintos diseños para distintos tamaños de pantalla. Si es necesario, puedes restringir el acceso de tu app disponibilidad para ciertos dispositivos a través de Google Play Store de acuerdo con los siguientes Características del dispositivo:

Funciones del dispositivo

Para administrar la disponibilidad de tu app según las funciones del dispositivo, Android define los ID de función para cualquier función de hardware o software que puede no estar disponible en todos los dispositivos. Por ejemplo, el ID de función para el sensor de brújula es FEATURE_SENSOR_COMPASS, y el ID de función para widgets de apps es FEATURE_APP_WIDGETS

Si es necesario, puedes evitar que los usuarios instalen tu app cuando sus dispositivos no proporcionen una función necesaria. Para ello, declara la función con un elemento <uses-feature> en el archivo de manifiesto de tu app.

Por ejemplo, si tu app no tiene sentido en un dispositivo que carece de un sensor de brújula, puedes declarar el sensor de brújula como un requisito con la siguiente etiqueta de manifiesto:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

Google Play Store compara las funciones que requiere tu app con el funciones disponibles en los dispositivos de cada usuario para determinar si tu app compatible con cada dispositivo. Si el dispositivo no tiene todas las funciones requiere la aplicación, el usuario no puede instalarla.

Sin embargo, si la funcionalidad principal de tu app no requiere una función del dispositivo, configura el atributo required en "false" y verifica la función del dispositivo en tiempo de ejecución. Si la función de la app no está disponible en el dispositivo actual, realiza una degradación elegante función de la app correspondiente. Por ejemplo, puedes consultar si una función está disponible llamando a hasSystemFeature() de esta manera:

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature()
}
PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature();
}

Para obtener información sobre todos los filtros que puedes usar para controlar la disponibilidad de tu app a través de Google Play Store, consulta la documentación sobre Filtros en Google Play.

Versión de plataforma

Distintos dispositivos pueden ejecutar diferentes versiones de la plataforma de Android, como como Android 12 o Android 13. Cada versión posterior de la plataforma suele agregar APIs. no disponible en la versión anterior. Para indicar qué conjunto de APIs están disponibles, cada versión de la plataforma especifica un nivel de API. Por ejemplo, Android 12 tiene un nivel de API 31 y Android 13 tiene un nivel de API 33.

Debes especificar minSdkVersion y targetSdkVersion valores en tu archivo build.gradle:

android {
    defaultConfig {
        applicationId = "com.example.myapp"

        // Defines the minimum API level required to run the app.
        minSdkVersion(30)

        // Specifies the API level used to test the app.
        targetSdkVersion(33)
        ...
    }
}
android {
    defaultConfig {
        applicationId 'com.example.myapp'

        // Defines the minimum API level required to run the app.
        minSdkVersion 30

        // Specifies the API level used to test the app.
        targetSdkVersion 33
        ...
    }
}

Para obtener más información sobre el archivo build.gradle, consulta Configura tu compilación.

Cada versión posterior de Android proporciona compatibilidad para las apps compiladas con las APIs de versiones anteriores de la plataforma, por lo que tu app es compatible con versiones futuras de Android mientras usas las APIs de Android documentadas.

Sin embargo, si tu app usa APIs agregadas en una versión más reciente de la plataforma, pero no los requiera para su funcionalidad principal, comprueba el nivel de API en del entorno de ejecución y degradar de forma elegante las funciones correspondientes cuando el nivel de API demasiado bajo. En este caso, establece minSdkVersion en el valor más bajo posible para la funcionalidad principal de tu app y, luego, compara la versión del sistema actual, SDK_INT, con la constante de nombre interno en Build.VERSION_CODES que corresponda al nivel de API que deseas verificar, como se muestra en el siguiente ejemplo:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop()
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop();
}

Configuración de pantalla

Android se ejecuta en dispositivos de varios tamaños, como teléfonos, tablets y TVs. Para categorizar los dispositivos por tipo de pantalla, Android define dos características para cada uno: tamaño de pantalla (el tamaño físico) y densidad de pantalla (la densidad física de los píxeles, conocida como DPI). Para simplificar las diferentes configuraciones, Android generaliza estas variantes en grupos que las hacen más fáciles de orientar:

  • Cuatro tamaños generalizados: pequeño, normal, grande y extra grande
  • Varias densidades generalizadas: mdpi (media), hdpi (alta), xhdpi (extra) alta), xxhdpi (extra-extra alta) y otros

De forma predeterminada, tu app es compatible con todos los tamaños y densidades de pantalla porque el sistema realiza los ajustes adecuados a tu diseño de IU y recursos de imagen según sea necesario para cada pantalla. Proporciona imágenes de mapa de bits optimizadas para densidades de pantalla comunes.

Optimiza la experiencia del usuario usando diseños flexibles tanto como sea posible. Cuando haya diseños para cambios de configuración grandes, como vertical y horizontal, o tamaños de ventana grandes en comparación con los pequeños, considera proporcionar diseños alternativos que sean flexibles para cambios más pequeños en la configuración. Esto mejora la experiencia del usuario en factores de forma como tablets, teléfonos y dispositivos plegables. También ayuda cuando las ventanas cambian de tamaño en el modo multiventana.

Si deseas obtener información sobre cómo crear recursos alternativos para diferentes pantallas y cómo restringir tu app a ciertos tamaños de pantalla cuando sea necesario lee el compatibilidad de pantalla Resumen y consulta la app para pantalla grande lineamientos de calidad.

Controla la disponibilidad de tu app por motivos comerciales

Además de restringir la disponibilidad de tu app según las características del dispositivo, es posible que debas restringir su disponibilidad por razones comerciales o legales. Para este tipo de situación, Google Play Store proporciona opciones de filtrado en Play Console que te permiten controlar la configuración disponibilidad por razones no técnicas, como configuración regional del usuario proveedor.

El filtrado de la compatibilidad técnica (como los componentes de hardware obligatorios) siempre se basa en la información contenida en el archivo APK o AAB. Pero filtrar por razones no técnicas, como la configuración regional, siempre se maneja en la Google Play Console

Recursos adicionales:

Descripción general de los recursos de la app
Información sobre cómo se estructuran las apps para Android a fin de separar los recursos de la app de su código, incluido cómo puedes proporcionar recursos alternativos para configuraciones específicas de dispositivos.
Filtros en Google Play
Información sobre las diferentes formas en que Google Play Store puede evitar que para evitar que se instale en dispositivos diferentes.
Permisos en Android
Cómo restringe Android el acceso de las apps a ciertas APIs con un sistema de permisos que requiere el consentimiento del usuario para que tu app use esas APIs.