Únete a ⁠ #Android11: The Beta Launch Show el 3 de junio.

Filtros en Google Play

Cuando un usuario busca o examina apps para descargar en Google Play, los resultados se filtran en función de las aplicaciones compatibles con el dispositivo. Por ejemplo, si una app requiere una cámara, Google Play no la mostrará a los dispositivos que no tengan cámara. Este filtrado ayuda a los desarrolladores a administrar la distribución de sus apps y a garantizar la mejor experiencia para los usuarios.

El filtrado en Google Play se basa en diversos tipos de metadatos de las apps y sus opciones de configuración, como las declaraciones de manifiesto, las bibliotecas requeridas, las dependencias de arquitectura y los controles de distribución configurados en Google Play Console (por ejemplo, la orientación geográfica, la fijación de precios, etc.).

El filtrado de Google Play se basa en las declaraciones de manifiesto y otros aspectos del marco de trabajo de Android, pero los comportamientos de filtrado reales son diferentes de los del marco de trabajo y no se rigen según niveles de API específicos. En este documento, se especifican las reglas actuales de filtrado que utiliza Google Play.

Cómo funcionan los filtros en Google Play

Google Play usa las restricciones de filtrado que se describen a continuación para determinar si se va a mostrar tu app a un usuario que examina o busca aplicaciones en la app de Google Play.

Para determinar si se mostrará tu app, Google Play revisa los requisitos de hardware y software del dispositivo, el proveedor, la ubicación y otras características. Luego, los compara con las restricciones y dependencias que se expresan en el archivo de manifiesto de la app y los detalles de publicación.

Si la app es compatible con el dispositivo, de acuerdo con las reglas de filtrado, Google Play la muestra al usuario. De lo contrario, Google Play la oculta de los resultados de la búsqueda y la exploración de categorías, aunque el usuario solicite específicamente la aplicación mediante un clic en un vínculo directo que apunta directamente al ID de la app dentro de Google Play.

Puedes usar cualquier combinación de los filtros disponibles para tu app. Por ejemplo, puedes establecer un requisito minSdkVersion de "4" y configurar smallScreens="false" en la app; luego, cuando subas la app a Google Play, puedes orientarla solamente a los países (proveedores) europeos. Entonces, los filtros de Google Play evitarán que la app esté disponible en un dispositivo que no cumpla con los tres requisitos.

Todas las restricciones de filtrado están asociadas con la versión de una app y puede haber diferencias entre versiones. Por ejemplo, si un usuario instaló tu app y publicas una actualización que permite que esté disponible para el usuario, este no verá que hay una actualización disponible.

Filtrado en el sitio web de Google Play

Cuando los usuarios examinan el sitio web de Google Play, pueden ver todas las apps publicadas. Sin embargo, el sitio web de Google Play compara los requisitos de la app con cada uno de los dispositivos registrados de los usuarios a fin de determinar si hay compatibilidad y solo les permite instalar la app si es compatible con sus dispositivos.

Cómo filtran en función del manifiesto de la app

La mayoría de los filtros se activan mediante elementos que se encuentran dentro del archivo de manifiesto de la app: AndroidManifest.xml (aunque no todo lo que aparece dentro del archivo de manifiesto puede activar el filtrado). En la tabla 1, se muestran los elementos del manifiesto que deberías usar para activar el filtrado y se explica cómo funciona el filtrado para cada elemento.

Tabla 1: Elementos del manifiesto que activan el filtrado en Google Play

Elemento del manifiesto Nombre del filtro Cómo funciona
<supports-screens> Tamaño de la pantalla

Para indicar los tamaños de pantalla con los que es compatible, una app establece atributos del elemento <supports-screens>. Cuando se publica la app, Google Play usa esos atributos para determinar si puede mostrársela a los usuarios en función de los tamaños de pantalla de sus dispositivos.

Como regla general, Google Play asume que la plataforma del dispositivo puede adaptar diseños más pequeños a pantallas más grandes, pero no puede adaptar diseños grandes a pantallas más pequeñas. Por lo tanto, si una app declara compatibilidad con el tamaño de pantalla "normal" únicamente, Google Play la muestra para dispositivos con pantallas normales y grandes, pero aplica un filtro a fin de que la app no esté disponible para dispositivos con pantalla pequeña.

Si una app no declara atributos para <supports-screens>, Google Play usa los valores predeterminados para esos atributos, que varían según el nivel de API. Más precisamente, sucederá lo siguiente:

  • Para las apps que establecen el atributo android: minSdkVersion o android: targetSdkVersion en 3 o menos, el elemento <supports-screens> en sí no está definido y no hay atributos disponibles. En ese caso, Google Play supone que la app se diseñó para pantallas de tamaño normal y la muestra a dispositivos con pantallas de tamaño normal o más grande.

  • Cuando se establecen los atributos android: minSdkVersion o android: targetSdkVersion en 4 o más, el valor predeterminado para todos los atributos es "true". De esta manera, se considera que la aplicación es compatible, de forma predeterminada, con todos los tamaños de pantalla.

Ejemplo 1
El manifiesto declara <uses-sdk android:minSdkVersion="3"> y no incluye un elemento <supports-screens>. Resultado: Google Play no mostrará la app a un usuario que tenga un dispositivo con pantalla pequeña, pero se la mostrará a usuarios con dispositivos que tengan pantallas de tamaño normal y grande, a menos que se apliquen otros filtros.

Ejemplo 2
El manifiesto declara <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"> y no incluye un elemento <supports-screens>. Resultado: Google Play mostrará la app a los usuarios de todo tipo de dispositivo, a menos que se apliquen otros filtros.

Ejemplo 3
El manifiesto declara <uses-sdk android:minSdkVersion="4"> y no incluye un elemento <supports-screens>. Resultado: Google Play mostrará la app a todos los usuarios, a menos que se apliquen otros filtros.

Para obtener más información sobre cómo declarar la compatibilidad con los tamaños de pantalla en tu app, consulta <supports-screens> y Compatibilidad con varias pantallas.

<uses-configuration> Configuración del dispositivo:
teclado, navegación, pantalla táctil

Una app puede requerir ciertas características de hardware, y Google Play mostrará la app únicamente a los dispositivos que tengan el hardware requerido.

Ejemplo 1
El manifiesto incluye <uses-configuration android:reqFiveWayNav="true" /> y un usuario busca apps en un dispositivo que no tiene un control de navegación de cinco direcciones. Resultado: Google Play no le mostrará la app al usuario.

Ejemplo 2
El manifiesto no incluye un elemento <uses-configuration>. Resultado: Google Play mostrará la app a todos los usuarios, a menos que se apliquen otros filtros.

Si deseas obtener más información, consulta <uses-configuration>.

<uses-feature> Funciones del dispositivo
(name)

Una app puede requerir que el dispositivo tenga ciertas funciones. Esta funcionalidad se introdujo en Android 2.0 (API nivel 5).

Ejemplo 1
El manifiesto incluye <uses-feature android:name="android.hardware.sensor.light" /> y un usuario busca apps en un dispositivo que no tiene sensor de luz. Resultado: Google Play no le mostrará la app al usuario.

Ejemplo 2
El manifiesto no incluye un elemento <uses-feature>. Resultado: Google Play mostrará la app a todos los usuarios, a menos que se apliquen otros filtros.

Para obtener información completa, consulta <uses-feature> .

Filtrado basado en características implícitas: En algunos casos, Google Play interpreta los permisos solicitados a través de elementos <uses-permission> como requisitos de funciones equivalentes a los declarados en los elementos <uses-feature>. Consulta <uses-permission> a continuación.

Versión de OpenGL ES
(openGlEsVersion)

Una aplicación puede requerir que el dispositivo sea compatible con una versión de OpenGL-ES específica mediante el atributo <uses-feature android:openGlEsVersion="int">.

Ejemplo 1
Una app solicita varias versiones de OpenGL-ES especificando openGlEsVersion varias veces en el manifiesto. Resultado: Google Play asume que la app requiere las últimas actualizaciones de las versiones indicadas.

Ejemplo 2
Una app solicita OpenGL-ES versión 1.1, y un usuario está buscando apps en un dispositivo compatible con OpenGL-ES versión 2.0. Resultado: Google Play le mostrará la app al usuario, a menos que se apliquen otros filtros. Si un dispositivo informa que es compatible con la versión X de OpenGL-ES, Google Play asume que también es compatible con las versiones anteriores a X.

Ejemplo 3
Un usuario está buscando apps en un dispositivo que no informa una versión de OpenGL-ES (por ejemplo, un dispositivo con Android 1.5 o anterior). Resultado: Google Play asume que el dispositivo solo es compatible con OpenGL-ES 1.0. Google Play le mostrará al usuario únicamente apps que no especifiquen openGlEsVersion o apps que no especifiquen una versión de OpenGL-ES posterior a 1.0.

Ejemplo 4
El manifiesto no especifica openGlEsVersion. Resultado: Google Play mostrará la app a todos los usuarios, a menos que se apliquen otros filtros.

Si deseas obtener más información, consulta <uses-feature>.

<uses-library> Bibliotecas de software

Una aplicación puede requerir que el dispositivo tenga bibliotecas compartidas específicas.

Ejemplo 1
Una app requiere la biblioteca com.google.android.maps y un usuario busca aplicaciones en un dispositivo que no tiene la biblioteca com.google.android.maps. Resultado: Google Play no le mostrará la app al usuario.

Ejemplo 2
El manifiesto no incluye un elemento <uses-library>. Resultado: Google Play mostrará la app a todos los usuarios, a menos que se apliquen otros filtros.

Si deseas obtener más información, consulta <uses-library>.

<uses-permission>  

En rigor, Google Play no filtra en función de los elementos <uses-permission>. Sin embargo, sí lee los elementos para determinar si la app tiene requisitos de características de hardware que pueden no haberse declarado correctamente en los elementos <uses-feature>. Por ejemplo, si una app solicita el permiso CAMERA, pero no declara un elemento <uses-feature> para android.hardware.camera, Google Play considera que la app requiere una cámara y no se debe mostrar a los usuarios cuyos dispositivos no ofrecen cámara.

En general, si una app requiere elementos relacionados con hardware, Google Play asume que la aplicación requiere las características de hardware subyacentes, aunque no se correspondan con los enunciados de <uses-feature>. Luego, Google Play establece el filtrado según las funciones denotadas por los enunciados de <uses-feature>.

Para obtener una lista de permisos que implican funciones de hardware, consulta la documentación relacionada con el elemento <uses-feature>.

<uses-sdk> Versión mínima del marco de trabajo (minSdkVersion)

Una app puede requerir un nivel de API mínimo.

Ejemplo 1
El manifiesto incluye <uses-sdk android:minSdkVersion="3"> y la app usa las API que se introdujeron en la API nivel 3. Un usuario busca apps en un dispositivo con API nivel 2. Resultado: Google Play no le mostrará la app al usuario.

Ejemplo 2
El archivo de manifiesto no incluye minSdkVersion y la app usa API que se introdujeron en la API nivel 3. Un usuario busca apps en un dispositivo con API nivel 2. Resultado: Google Play asume que el atributo minSdkVersion es "1" y que la app es compatible con todas las versiones de Android. Google Play le muestra la app al usuario y le permite descargarla. La app falla durante el tiempo de ejecución.

Como te conviene evitar este segundo caso, te recomendamos que siempre declares un atributo minSdkVersion. Para obtener más información, consulta android:minSdkVersion.

Versión máxima del marco de trabajo (maxSdkVersion)

Obsoleto. Android 2.1 y las versiones posteriores no verifican ni aplican el atributo maxSdkVersion, y el SDK no se compilará si el atributo maxSdkVersion está configurado en el manifiesto de una app. En el caso de los dispositivos ya compilados con el atributo maxSdkVersion, Google Play respetará ese atributo y lo usará para el filtrado.

No se recomienda declarar el atributo maxSdkVersion. Para obtener más información, consulta android:maxSdkVersion.

Filtros avanzados del manifiesto

Además de los elementos del manifiesto que se indican en la tabla 1, Google Play también puede filtrar apps en función de los elementos avanzados del manifiesto que se indican en la tabla 2.

Estos elementos del manifiesto y el filtrado que desencadenan se utilizan solo en casos excepcionales. Se diseñaron para ciertos tipos de juegos de alto rendimiento y apps similares que requieren controles estrictos de distribución de la app. No se deberían utilizar estos filtros en la mayoría de las apps.

Tabla 2: Elementos avanzados del manifiesto para filtrado en Google Play.

Elemento del manifiestoResumen
<compatible-screens>

Google Play filtra la app si el tamaño de pantalla del dispositivo no coincide con ninguna de las configuraciones de pantalla (declaradas por un elemento <screen>) en el elemento <compatible-screens>.

Precaución: Por lo general, no deberías usar este elemento del manifiesto. El uso de este elemento puede reducir notablemente la base de usuarios potenciales para tu aplicación, al excluir todas las combinaciones de tamaño de pantalla y densidad que no indicaste. En cambio, debes usar el elemento del manifiesto <supports-screens> (que se describió en la tabla 1 ) si quieres habilitar el modo de compatibilidad de pantalla para las configuraciones de pantalla que no abarcaste con recursos alternativos.

<supports-gl-texture>

Google Play filtrará la app, a menos que uno o más de los formatos de compresión de texturas GL compatibles con la app también sean compatibles con el dispositivo.

Otros filtros

Google Play utiliza otras características de la app para determinar si va a mostrar u ocultar una aplicación a un usuario específico o un dispositivo determinado, tal como se describe en la tabla a continuación.

Tabla 3: Características de la aplicación y la publicación que afectan el filtrado en Google Play.

Nombre del filtro Cómo funciona
Estado de la publicación

Solo las apps publicadas aparecerán en las búsquedas y exploraciones en Google Play.

Incluso cuando una app no esté publicada, se podrá instalar si los usuarios pueden visualizarla en el área de descargas entre las apps que compraron, instalaron o desinstalaron recientemente.

Si se suspende una aplicación, los usuarios no podrán volver a instalarla ni actualizarla, aunque aparezca en sus Descargas.

Estado del precio

No todos los usuarios pueden ver aplicaciones pagadas. Para mostrar aplicaciones pagadas, un dispositivo debe ejecutar Android 1.1 o una versión posterior, y debe encontrarse en un país en el que las apps estén disponibles. Si un dispositivo tiene una tarjeta SIM, el proveedor será quien determina si las aplicaciones pagadas estarán disponibles. Si un dispositivo no tiene una tarjeta SIM, la dirección IP del dispositivo se usa para determinar si se encuentra en un país en el que las aplicaciones pagadas están disponibles.

Orientación por país

Cuando subes tu app en Google Play, puedes seleccionar los países en los que se distribuirá en Precios y distribución. La app solo estará disponible para los usuarios de los países que selecciones.

Arquitectura de CPU (ABI)

Las apps que incluyen bibliotecas nativas orientadas a una arquitectura de CPU específica (por ejemplo: ARM EABI v7 o x86) se pueden visualizar en dispositivos que admiten esa arquitectura. Para obtener información detallada acerca del NDK y del uso de bibliotecas nativas, consulta ¿Qué es el NDK de Android?

Apps protegidas contra copias

Google Play ya no admite la función Protección contra copias en Play Console y ya no filtra apps de acuerdo con esa función. Para proteger tu app, usa en su lugar Licencias de aplicaciones. Consulta Reemplazo de Protección contra copias para obtener más información.

Publicación de múltiples APK con diferentes filtros

Algunos filtros específicos de Google Play te permiten publicar múltiples APK para la misma aplicación a fin de proporcionar un APK distinto para diferentes configuraciones de dispositivos. Por ejemplo, si estás creando un videojuego que utiliza recursos gráficos de alta fidelidad, te recomendamos que crees dos APK y que cada uno admita diferentes formatos de compresión de texturas. De esta manera, puedes reducir el tamaño del archivo APK al incluir solo las texturas necesarias para la configuración de cada dispositivo. Según la compatibilidad de cada dispositivo con tus formatos de compresión de texturas, Google Play le proporcionará el APK que hayas declarado como compatible con ese dispositivo.

Actualmente, Google Play te permite publicar varios APK para la misma aplicación solo cuando cada APK proporciona diferentes filtros en función de las siguientes configuraciones:

  • Formatos de compresión de texturas OpenGL

    Mediante el elemento <supports-gl-texture>.

  • Tamaño de pantalla (y, de manera opcional, densidad de la pantalla)

    Mediante el elemento <supports-screens> o <compatible-screens>.

  • Nivel de API

    Mediante el elemento <uses-sdk>.

  • Arquitectura de CPU (ABI)

    Mediante bibliotecas nativas incorporadas con el NDK de Android que apuntan a una arquitectura de CPU específica (por ejemplo: ARM EABI v7 o x86)

Todos los demás filtros continúan funcionado de la forma habitual, pero estos cuatro son los únicos filtros que pueden distinguir un APK de otro dentro del mismo directorio de la aplicación en Google Play. Por ejemplo, no puedes publicar múltiples APK para la misma aplicación si los APK solo difieren en función de si el dispositivo tiene cámara.

Precaución: La publicación de múltiples APK para la misma aplicación se considera una función avanzada y la mayoría de las aplicaciones debe publicar un solo APK que admita una amplia variedad de configuraciones de dispositivos. La publicación de varios APK requiere que sigas reglas específicas dentro de tus filtros y que prestes especial atención a los códigos de versión de cada APK a fin de garantizar las vías de actualización adecuadas para cada configuración.

Si necesitas más información acerca de cómo publicar varios APK en Google Play, lee Compatibilidad con varios APK.

Consulta también

  1. Compatibilidad con Android
  2. Compatibilidad con varios APK