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, incluidas las declaraciones de manifiesto, las bibliotecas requeridas, las dependencias de arquitectura y los controles de distribución configurados en Google Play Console, como el perfilamiento geográfico, 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 y no están condicionados a niveles de API específicos. Este documento especifica 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 mostrará su aplicación 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 aplicación y los detalles de publicación.

Si la aplicación 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 configurar un requisito minSdkVersion de "4" y configurar smallScreens="false" en la app; luego, al subir la app en Google Play, podrías apuntar a países europeos (proveedores) solamente. Entonces, los filtros de Google Play evitarán que la aplicación 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 aplicación y pueden diferir entre versiones. Por ejemplo, si un usuario instaló tu aplicación 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 aplicaciones publicadas. Sin embargo, el sitio web de Google Play compara los requisitos de la aplicación con cada uno de los dispositivos registrados de los usuarios a fin de determinar si hay compatibilidad, y solo les permite instalar la aplicación si es compatible con su dispositivo.

Filtrado 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 aplicación, 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 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

Una aplicación indica el tamaño de pantalla que puede admitir mediante la configuración de atributos del elemento <supports-screens>. Cuando se publica la aplicación, Google Play usa esos atributos para determinar si puede mostrar la aplicación 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 aplicación declara compatibilidad con el tamaño de pantalla "normal" únicamente, Google Play muestra la aplicación para dispositivos con pantallas normales y grandes, pero filtra la aplicación de modo que no esté disponible para dispositivos con pantalla pequeña.

Si una aplicación no declara atributos para <supports-screens>, Google Play utiliza los valores predeterminados para esos atributos, que varían según el nivel de API. Específicamente, encontramos las siguientes irregularidades:

  • Para aplicaciones que establecen android: minSdkVersion o android: targetSdkVersion en 3 o un valor inferior, el elemento <supports-screens> no se define y no hay atributos disponibles. En ese caso, Google Play supone que la aplicación se diseñó para pantallas de tamaño normal y muestra la aplicación a dispositivos con pantallas de tamaño normal o más grande.

  • Cuando android: minSdkVersion o android: targetSdkVersion se configura en 4 o un valor superior, el valor predeterminado de 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 acerca de cómo declarar la compatibilidad con los diferentes tamaños de pantalla en tu aplicación, consulta <supports-screens> y Compatibilidad con diferentes pantallas.

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

Una aplicación 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 cuenta con un control de navegación de cinco vías. 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.

Para obtener más información detallada, consulta <uses-configuration>.

<uses-feature> Funciones del dispositivo
(name)

Una aplicación puede requerir que el dispositivo tenga ciertas funciones. Esta funcionalidad se introdujo en Android 2.0 (nivel 5 de la API).

Ejemplo 1
El manifiesto incluye <uses-feature android:name="android.hardware.sensor.light" />, y un usuario busca apps en un dispositivo que no cuenta con un 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 conocer la información completa, consulta <uses-feature> .

Filtrado basado en funciones implícitas: En algunos casos, Google Play interpreta los permisos requeridos 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 admita 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 al especificar 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 la versión 1.1 de OpenGL-ES, y un usuario busca aplicaciones en un dispositivo que admite la versión 2.0 de OpenGL-ES. Resultado: Google Play le mostrará la app al usuario, a menos que se apliquen otros filtros. Si un dispositivo informa que admite la versión X de OpenGL-ES, Google Play asume que también admite las versiones anteriores de X.

Ejemplo 3
Un usuario está buscando apps en un dispositivo que no contiene información acerca de la versión de OpenGL-ES (por ejemplo, un dispositivo que ejecuta Android 1.5 o anterior). Resultado: Google Play asume que el dispositivo solo admite OpenGL-ES 1.0. Google Play le mostrará al usuario únicamente aplicaciones que no especifiquen openGlEsVersion o aplicaciones 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.

Para obtener más detalles, consulte <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 está buscando apps 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.

Para obtener más detalles, consulte <uses-library>.

<uses-permission>  

De forma estricta, Google Play no filtra en función de los elementos <uses-permission>. No obstante, sí lee los elementos para determinar si la aplicación tiene requisitos de características de hardware que podrían no haberse declarado correctamente en los elementos <uses-feature>. Por ejemplo, si una aplicación solicita el permiso CAMERA, pero no declara un elemento <uses-feature> para android.hardware.camera, Google Play considera que la aplicación requiere una cámara y no se le mostrará a los usuarios cuyos dispositivos no tengan cámara.

En general, si una aplicación 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 ver una lista de permisos que denotan funciones de hardware, consulta la documentación del elemento <uses-feature>.

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

Una aplicación puede requerir un nivel de API mínimo.

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

Ejemplo 2
El manifiesto no incluye minSdkVersion, y la app usa API que pertenecen al nivel de API 3. Un usuario busca apps en un dispositivo con nivel de API 2. Resultado: Google Play asume que 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 colapsa durante el tiempo de ejecución.

Para evitar esta segunda situación, te recomendamos que siempre declares un 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 comprueban ni aplican el atributo maxSdkVersion y el SDK no se compilará si maxSdkVersion está configurado en el manifiesto de la app. Para dispositivos que ya están compilados con maxSdkVersion, Google Play lo respetará y lo usará para el filtrado.

No se recomienda declarar 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 aplicaciones 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 únicamente en casos excepcionales. Se diseñaron para ciertos tipos de juegos de alto rendimiento y aplicaciones similares que requieren controles estrictos de distribución de la aplicación. La mayoría de las aplicaciones no deberían utilizar estos filtros.

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

Elemento del manifiestoResumen
<compatible-screens>

Google Play filtra la aplicación 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: Normalmente, 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 su lugar, debes usar el elemento del manifiesto <supports-screens> (descrito anteriormente en la tabla 1) a fin de habilitar el modo de compatibilidad de pantalla para las configuraciones de pantalla que no abarcaste con recursos adicionales.

<supports-gl-texture>

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

Otros filtros

Google Play utiliza otras características de la aplicación para determinar si 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

Únicamente las aplicaciones publicadas aparecerán en las búsquedas y exploraciones en Google Play.

Incluso cuando una app no esté publicada, se la podrá instalar si los usuarios pueden visualizarla en el área de Descargas entre las app 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 aplicaciones que incluyen bibliotecas nativas que apuntan a una arquitectura de CPU específica (por ejemplo: ARM EABI v7 o x86) pueden visualizarse 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?

Aplicaciones protegidas contra copia

Google Play ya no admite la función Protección contra copia en la Consola para desarrolladores, y ya no filtra aplicaciones 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, opcionalmente, 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 deben publicar un solo APK que admita una amplia variedad de configuraciones de dispositivos. La publicación de múltiples APK requiere que sigas reglas específicas dentro de tus filtros y que prestes especial atención a los códigos de versión para 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 múltiples APK en Google Play, lee Compatibilidad con múltiples APK.

Consulta también

  1. Compatibilidad con Android
  2. Cómo brindar compatibilidad con varios APK