Lineamientos de calidad básicos de las apps

éxito a largo plazo de tu app en términos de cantidad de instalaciones y opiniones de los usuarios, participación y retención

Para proporcionar una base sólida para una app de calidad, sigue los lineamientos principales de calidad para apps.

Los lineamientos definen la calidad mínima que deben cumplir todas las apps.

Calidad de las apps adaptativas

Las apps para Android se ejecutan en una amplia variedad de dispositivos, desde teléfonos compactos hasta tablets, plegables, computadoras de escritorio, pantallas conectadas, sistemas de infoentretenimiento para automóviles, TVs y XR. Los modos de ventanas, como el de pantalla dividida y el de ventanas de escritorio, permiten que las apps se ejecuten en porciones redimensionables de una pantalla.

Sigue los lineamientos de calidad de apps adaptables, junto con los principales lineamientos de calidad de las apps, para hacer lo siguiente:

  • Crea apps optimizadas para todos los factores de forma y tamaños de pantalla
  • Mejora el posicionamiento de tus apps en las fichas y la búsqueda de Google Play
  • Adquirir más usuarios y aumentar la retención de usuarios

Lineamientos

Los siguientes lineamientos principales te ayudan a compilar una app básica de alta calidad.

Experiencia del usuario

Tu app debe proporcionar los patrones de interacción y diseño visual estándares de Android para garantizar una experiencia del usuario intuitiva y coherente.

Usa componentes de Material Design para crear la interfaz de usuario de tu app en lugar de los componentes de la plataforma de Android siempre que sea posible. Material Design proporciona una apariencia y un estilo modernos de Android, además de coherencia en la IU en todas las versiones de Android.

ID Pruebas Descripción
Usabilidad
Usabilidad:UX T-Usability:Core,
T-SD-Card
La app proporciona una experiencia del usuario coherente para todos los casos de uso de la app en todos los factores de forma.
Usabilidad:Switcher T-Usability:Switcher,
T-SD-Card
La app pasa a segundo plano cuando el enfoque cambia a otra app. La app regresa a primer plano cuando se reactiva desde el conmutador de apps Recientes.
Usabilidad:Sueño T-Usability:Sleep,
T-SD-Card
Cuando la app está en primer plano, se pausa cuando el dispositivo entra en modo de suspensión y se reanuda cuando se activa.
Usabilidad:Lock T-Usability:Lock,
T-SD-Card
Cuando la app está en primer plano, se pausa cuando se bloquea el dispositivo y se reanuda cuando se desbloquea.
Interfaz de usuario
IU:Paridad T-UI:Transitions

Las orientaciones de pantalla y los estados de plegado exponen esencialmente las mismas funciones y acciones, y conservan la paridad funcional.

IU:Pantalla completa T-UI:Transitions

La app ocupa la ventana de la app en ambas orientaciones y no está en formato letterbox debido a cambios de configuración, incluidos el plegado y el desplegado del dispositivo.

Se acepta el uso mínimo de formato de pantalla ancha para compensar pequeñas variaciones en la geometría de la pantalla.

IU:Transiciones T-UI:Transitions La app controla las transiciones rápidas entre las orientaciones de la pantalla y el plegado o desplegado del dispositivo sin presentar problemas de renderización de la pantalla ni perder el estado.
Calidad visual
Visual:Display T-Visual:Display

La app muestra gráficos, texto, imágenes y otros elementos de la IU sin distorsión, esfumado ni pixelado notables.

  • La app usa elementos de diseño vectoriales cuando es posible
  • La app usa gráficos de alta calidad para todos los tamaños de pantalla y factores de forma objetivo
  • No se observa suavizado en los bordes de los menús, los botones ni otros elementos de la IU.
Visual:Legibilidad T-Visual:Readability La app garantiza la legibilidad del texto y los bloques de texto limitando la longitud de la línea a entre 45 y 75 caracteres (incluidos los espacios) para cada uno de los idiomas que admite.
Visual:Temas T-Visual:Themes El contenido de la app y todo el contenido web al que accede la app admiten los temas claro y oscuro.
Navegación
T-Nav:Back La app admite la navegación estándar del botón Atrás y no utiliza avisos personalizados en pantalla para este.
T-Nav:Back La app admite la navegación por gestos para volver atrás y navegar a la pantalla principal.
T-Nav:State,
T-Nav:Back

La app preserva el estado del usuario o la app cuando abandona el primer plano y evita la pérdida accidental de datos a causa de la navegación hacia atrás y otros cambios de estado.

Cuando regresa al primer plano, la app restablece el estado preservado y cualquier transacción con estado pendiente. Algunos ejemplos incluyen cambios en campos editables, progreso de un juego, menús, videos y otras secciones de la app.

  • Cuando se reanuda la app desde el conmutador de apps Recientes, la app regresa al usuario al estado exacto en que se encontraba la última vez que este la utilizó.
  • Cuando se reanuda la app después de la activación del dispositivo (luego de haber estado bloqueado), esta regresa al usuario al estado exacto en que se encontraba en la última utilización.
  • Cuando se reinicie desde Página principal o Todas las apps, la app debería realizar una de las siguientes acciones, según cuánto tiempo haya transcurrido desde la última utilización:
    • Si la app se usó por última vez hace poco tiempo (minutos), restablece el estado de la app lo más cerca posible de su estado anterior.
    • Si pasó más tiempo desde que se usó la app por última vez, restablécela lo más cerca posible de su estado anterior o iníciala en su pantalla principal o en cualquier otro estado predeterminado.
Notificaciones
Notify:Info T-Notify:Info

Las notificaciones proporcionan información relevante relacionada con tu app.

  • No uses las notificaciones para realizar promoción cruzada ni para publicitar otro producto, ya que Play Store lo prohíbe de forma estricta.
  • Los canales de notificaciones se definen según las prácticas recomendadas, en lugar de entregar todas las notificaciones desde un canal único.
  • Selecciona la prioridad de notificación correcta.
  • Cuando sea posible, consolida varias notificaciones en un solo grupo de notificaciones.
  • Establece tiempos de espera para las notificaciones cuando sea necesario.
  • Las notificaciones solo son recurrentes si están relacionadas con eventos actuales (como la reproducción de música o una llamada telefónica). Para obtener más información, consulta la sección Funcionalidad.
Notificar:Mensajería T-Notify:Info

Para apps de mensajería o sociales y conversaciones:

Accesibilidad
Access:Targets T-Access:Targets Los objetivos táctiles tienen al menos 48 dp. Consulta los lineamientos de diseño y tipografía de Material Design.
Access:Contrast T-Access:Contrast

El texto y el contenido de primer plano de la app mantienen las siguientes relaciones de contraste con el fondo de la app:

  • 3:1 para texto y gráficos grandes
  • 4.5:1 para texto pequeño (menos de 18 pt o menos de 14 pt si el texto está en negrita)

Obtén más información sobre el color y el contraste.

Acceso:Descripción T-Access:Description Describe cada elemento de la IU, excepto TextView, con contentDescription.

Funcionalidad

Tu app deberá implementar el siguiente comportamiento funcional.

ID Pruebas Descripción
Audio
Audio:Init T-Audio:Init

Cuando el usuario inicie la reproducción de audio, la app deberá realizar una de las siguientes acciones antes de que transcurra un segundo:

  • Comenzar a reproducir el audio
  • Proporcionar un indicador visual de que los datos de audio se están preparando
Audio:Focus T-Audio:Focus La app deberá solicitar foco de audio cuando el audio comience a reproducirse y deberá abandonarlo cuando se detenga la reproducción.
Audio:Interrupt T-Audio:Interrupt La app debe controlar las solicitudes de foco de audio de otras apps. Por ejemplo, una app podría bajar el volumen de reproducción cuando otra reproduzca contenido de voz.
Audio:Segundo plano T-Audio:Background La app debe admitir la reproducción en segundo plano.
Audio:Notificación T-Audio:Notification Cuando la app reproduce audio en segundo plano, debe crear una notificación con el estilo MediaStyle.
Audio:Reanudar T-Audio:Resume Si la app está en segundo plano y el audio está pausado, la reproducción de audio continúa cuando la app regresa a primer plano, o la app debe indicarle al usuario que la reproducción está pausada.
Video
Video:PIP T-Video:PiP Si la app reproduce video, deberá admitir la reproducción pantalla en pantalla.
Video:Codificación T-Video:Encoding Si la app codifica contenido de video, deberá hacerlo con el estándar de compresión de video HEVC.
Uso compartido
Compartir:Hoja T-Sharing:Sheet La app deberá usar Android Sharesheet cuando comparta contenido. La app puede sugerir objetivos que no están disponibles para las soluciones personalizadas.
Servicios en segundo plano
Antecedentes:Servicios T-Background:Services

La app evita que se ejecuten servicios innecesariamente largos en segundo plano. Garantizar que el dispositivo del usuario funcione sin problemas

Nota: El sistema aplica varias restricciones a los servicios en segundo plano.

Los siguientes son usos inadecuados de los servicios en segundo plano:

  • Mantener una conexión de red para las notificaciones
  • Mantener una conexión Bluetooth
  • Mantener el GPS encendido

Para obtener más información, consulta Descripción general de las tareas en segundo plano.

Rendimiento y estabilidad

Tu app debe proporcionar un rendimiento, una estabilidad, una compatibilidad y una capacidad de respuesta óptimos.

ID Pruebas Descripción
Rendimiento
Rendimiento:Inicio T- Performance:Startup La app se carga rápidamente o le proporciona al usuario comentarios en pantalla (como un indicador de progreso o una señal similar) en el caso de que tarde más de dos segundos en cargarse.
Rendimiento:FPS T-Performance:FPS La app renderiza fotogramas cada 16 (o menos) milisegundos para mostrar al menos 60 fotogramas por segundo. Si necesitas ayuda con problemas de procesamiento, consulta Procesamiento lento.
Rendimiento:Estricto T-Performance:Strict Con StrictMode habilitado (consulta la sección de pruebas de StrictMode), no se verán destellos rojos (advertencias de rendimiento de StrictMode) durante la prueba de la app.
Estabilidad
Estabilidad:ANR T-Stability:ANR La app no falla ni bloquea el subproceso de IU que provoca errores de ANR (Android no responde). Usa el informe previo al lanzamiento de Google Play para identificar posibles problemas de estabilidad. Después de la implementación, supervisa la página Android vitals en Google Play Console.
SDK
SDK:Platform T-SDK:Platform La app se ejecuta en la versión pública más reciente de la plataforma de Android sin fallar ni afectar gravemente la funcionalidad principal.
SDK:Target T-SDK:Latest La app se orienta al SDK de Android más reciente necesario para alinearse con los requisitos de Google Play estableciendo el valor targetSdk en el archivo build.gradle del módulo de la app.
SDK:Compile T-SDK:Latest La app se compila con el SDK de Android más reciente estableciendo el valor compileSdk en el archivo build.gradle del módulo de la app.
SDK:3P T-SDK:3P,
T-SDK:Non

Todos los SDKs de Google o de terceros que se usan están actualizados. Cualquier mejora que se realice a estos SDKs relacionada con la estabilidad, la compatibilidad o la seguridad debe estar disponible de forma oportuna para los usuarios.

Para los SDKs de Google, usa los SDKs con la tecnología de los Servicios de Google Play cuando estén disponibles. Estos SDKs son retrocompatibles, reciben actualizaciones automáticas, reducen el tamaño del paquete de la app y hacen un uso eficiente de los recursos integrados en el dispositivo.

SDK:Non T-SDK:Non La app no usa interfaces que no pertenecen al SDK.
SDK:Debug T-SDK:Debug No se incluyen bibliotecas de depuración en la app de producción. Las bibliotecas de depuración incluidas en la app pueden causar problemas de rendimiento y de seguridad.
Batería
Batería:Administrar T-Battery:Manage

La app admite correctamente las funciones de administración de energía Descanso y App Standby.

Las apps pueden solicitar una exención de mantenimiento de energía. Consulta Compatibilidad con otros casos de uso en Cómo optimizar tu app para Descanso y App Standby.

Privacidad y seguridad

La app administra de forma segura los datos del usuario y su información personal, y proporciona los niveles de permisos adecuados.

Las aplicaciones publicadas en Google Play Store también deben cumplir con las políticas de Datos del Usuario de Google Play para proteger la privacidad del usuario.

ID Pruebas Descripción
Permisos
Permisos:Min T-Permissions:Min La app solicita solo los permisos mínimos absolutos necesarios para admitir el caso de uso actual. Para algunos permisos, como la ubicación, la app usa una especificación aproximada en lugar de precisa si es posible. Consulta Cómo minimizar las solicitudes de permiso.
Permisos:Sensibles T-Permissions:Sensitive

La app solicita permiso para acceder a datos sensibles (como los grupos de permisos de SMS o Registro de llamadas o la ubicación) o a servicios que cuestan dinero (como el Teléfono o los SMS) solo cuando están directamente relacionados con los casos de uso principales de la app. Las consecuencias relacionadas con estos permisos se deben divulgar de manera destacada al usuario.

Según cómo use tu app los permisos, es posible que haya una forma alternativa de cumplir con el caso de uso de tu app sin depender del acceso a información sensible. Por ejemplo, en lugar de solicitar permisos relacionados con los contactos de un usuario, usa un intent implícito para solicitar acceso.

Permisos:Tiempo de ejecución T-Permissions:Runtime La app solicita permisos de tiempo de ejecución cuando se solicita la funcionalidad, en lugar de hacerlo durante el inicio de la app.
Permissions:Explain T-Permissions:Explain La app explica claramente por qué se necesitan los permisos.
Permisos:Degradación T-Permissions:Degrade La app se degrada de manera elegante cuando los usuarios rechazan o revocan un permiso. La app no debe impedir el acceso del usuario por completo.
Datos y archivos
Datos:Sensibles T-Data:Sensitive,
T-Data:Handling
Todos los datos sensibles se almacenan en el almacenamiento interno de la app.
Datos:Log T-Data:Log No se registran datos personales o sensibles de los usuarios en el registro del sistema ni en un registro específico de la app.
Datos:IDs T-Data:IDs La app no usa IDs de hardware que no se puedan restablecer, como el IMEI, para fines de identificación.
Identidad
Identity:Hints T-Identity:Hints La app brinda sugerencias para autocompletar las credenciales de la cuenta y otra información sensible, como datos de tarjetas de crédito, direcciones físicas y números de teléfono.
Identidad:CredMan T-Identity:CredMan La app integra Credential Manager para Android para brindar una experiencia de acceso fluida que unifica la compatibilidad con llaves de acceso, identidades federadas y contraseñas.
Identidad:Biografía T-Identity:Bio La app admite la autenticación biométrica para proteger las transacciones financieras y la información sensible, como los documentos importantes de los usuarios.
Componentes de la app
Componentes:Exportar T-Components:Export

La app establece el atributo android:exported de forma explícita para todas las actividades, los servicios, los receptores de emisión y, en especial, los proveedores de contenido.

Solo se exportan los componentes de la aplicación que comparten datos con otras apps o aquellos que otras apps deberían invocar.

Componentes:Permisos T-Components:Permissions

Todos los intents y transmisiones siguen las prácticas recomendadas:

Componentes:Protección T-Components:Protection

Todos los componentes que comparten contenido entre apps usan android:protectionLevel="signature" para los permisos personalizados. Esto incluye actividades, servicios, receptores de emisión y, en especial, proveedores de contenido.

Las apps no deben depender del acceso a una lista de paquetes instalados.

Redes
Red:Tráfico T-Network:Traffic Todo el tráfico de red se envía mediante SSL.
Network:Config T-Network:Config La app declara una configuración de seguridad de red.
Red:Play T-Network:Play Si la app usa los Servicios de Google Play, se inicializará el proveedor de seguridad cuando lo haga la app.
WebViews
WebViews:Config T-WebViews:Config,
T-WebViews:Nav
No uses setAllowUniversalAccessFromFileURLs() para acceder al contenido local. En su lugar, usa WebViewAssetLoader.
WebViews:JavaScript T-WebViews:JavaScript,
T-WebViews:Nav

Las vistas web no usan addJavaScriptInterface() con contenido que no es de confianza.

En su lugar, en Android 6.0 (nivel de API 23 y versiones posteriores), usa los canales de mensajes HTML.

Ejecución
Ejecución:paquetes T-Execution:Bundles

La app no carga código dinámicamente desde fuera del APK de la app. Usa Android App Bundles, que incluyen Play Feature Delivery y Play Asset Delivery.

A partir de agosto de 2021, el uso de Android App Bundles es obligatorio para todas las apps nuevas en Google Play Store.

Criptografía
Criptografía:Algoritmos T-Crypto:Algorithms La app usa algoritmos criptográficos y un generador de números aleatorios proporcionados por la plataforma. Además, la app no implementa algoritmos personalizados.

Google Play

Habilita la publicación de tu app en Google Play.

ID Pruebas Descripción
Políticas
Play:Policies T-Play:Policies La app cumple estrictamente con los términos de la Política de Contenido para Desarrolladores de Google Play, no ofrece contenido inapropiado ni utiliza la propiedad intelectual o la marca de otros.
Play:Maturity T-Play:Policies El nivel de madurez de la app se establece de forma correcta en función de los Lineamientos de Clasificación del Contenido.
Página de detalles de la app
Play:Gráficos T-Play:Graphics,
T-Play:Assets

El gráfico de funciones de la app sigue los lineamientos que se describen en este artículo de asistencia. Asegúrate de cumplir con lo siguiente:

  • El directorio de la app incluye un gráfico central de alta calidad
  • El gráfico central no contiene imágenes de dispositivos, capturas de pantalla ni texto pequeño que resulte ilegible cuando la app se reduzca en tamaño para visualizarse en el tamaño más pequeño de pantalla que tu app admita.
  • El gráfico central no se parece a un anuncio publicitario.
Play:NonAndroid T-Play:Assets Las capturas de pantalla y los videos de la app no muestran ni hacen referencia a dispositivos que no sean Android.
Play:Engañosa T-Play:Assets Las capturas de pantalla o los videos de la app no representan el contenido ni la experiencia que ofrece tu app de forma confusa.
Asistencia para el usuario
Play:Bugs T-Play:Policies Los errores comunes informados por los usuarios en la pestaña Reseñas de la página de Google Play se abordan siempre que se puedan reproducir y ocurran en muchos dispositivos diferentes. Si se produce un error en unos pocos dispositivos, aún debes abordarlo en caso de que esos dispositivos sean especialmente populares o nuevos.

Entorno de pruebas

Configura un entorno de pruebas de la siguiente manera:

  • Pruebas de emulador: Android Emulator es una excelente manera de probar tu app en diferentes versiones de Android y resoluciones de pantalla. Configura dispositivos emulados (AVDs) para representar los factores de forma y las combinaciones de hardware y software más comunes para tu base de usuarios objetivo. Prueba una variedad de factores de forma con los siguientes emuladores (como mínimo):

    • Dispositivos plegables: 7.6" con pantalla plegable (se muestra en teléfonos en el Administrador de AVD)
    • Tablet: Pixel C 9.94" (2,560 px x 1,800 px)
    • Pruebas de notificaciones de apps para dispositivos móviles: Vincula un dispositivo móvil o emulador con el emulador de Wear OS: Wear OS redondo de 1.84".
  • Dispositivos de hardware: El entorno de pruebas debe incluir una pequeña cantidad de dispositivos de hardware reales que representen los factores de forma y las combinaciones de hardware y software claves que se encuentren disponibles para los consumidores. No es necesario que hagas pruebas en todos los dispositivos disponibles en el mercado. Concéntrate en una pequeña cantidad de dispositivos representativos, incluso puedes usar uno o dos dispositivos por factor de forma.

  • Test Labs de dispositivos: También puedes usar servicios de terceros, como Firebase Test Lab, para probar tu app en una amplia variedad de dispositivos.

  • Prueba con la última versión de Android: Además de probar versiones representativas de Android para tu base de usuarios objetivo, siempre debes hacer pruebas con la última versión de Android para asegurarte de que los cambios de comportamiento más recientes no afecten negativamente la experiencia del usuario de tu app.

Si deseas obtener más orientación sobre las pruebas, incluidas las pruebas de unidades, las pruebas de integración y las pruebas de IU, consulta Fundamentos de la prueba de apps para Android.

StrictMode

Para las pruebas de rendimiento, habilita StrictMode en tu app. Usa StrictMode para detectar operaciones que podrían afectar el rendimiento, el acceso a la red y la lectura y escritura de archivos. Busca operaciones potencialmente problemáticas en el subproceso principal y en otros.

Establece una política de supervisión por subproceso con StrictMode.ThreadPolicy.Builder y habilita toda la supervisión compatible en ThreadPolicy con detectAll().

Habilita la notificación visual de los incumplimientos de políticas para la ThreadPolicy con penaltyFlashScreen().

Pruebas

Las pruebas de calidad de la app principal te ayudan a evaluar la calidad fundamental de tu app. Puedes combinar las pruebas o integrar grupos de pruebas en tu plan de prueba.

Experiencia del usuario

ID Función Descripción
Usabilidad
T-Usability:Core Usabilidad:UX

Navega a todas las partes de la app (pantallas, diálogos, configuraciones y flujos de usuarios).

Sigue estos pasos:
  • Si la aplicación permite editar o crear contenido, jugar o reproducir contenido multimedia, asegúrate de probar esos flujos.
  • Mientras pruebas la app, genera interrupciones provenientes de otras apps, como recibir una notificación o una llamada telefónica, y aplica cambios transitorios en los atributos del dispositivo, como la conectividad de red, la función de la batería, la disponibilidad del GPS y la carga del sistema.
  • Ingresa y prueba todos los flujos de compra directa desde la aplicación.
T-Usability:Switcher Usability:Switcher Desde cada una de las pantallas de la app, pasa a otra que se esté ejecutando y luego regresa a la app que estés probando con el conmutador de apps Recientes.
T-Usability:Sleep Usabilidad:Sueño Presiona el botón de encendido para colocar el dispositivo en modo de suspensión y luego presiona nuevamente el botón de encendido para reactivar la pantalla.
T-Usability:Lock Usabilidad:Lock Establece un bloqueo de pantalla en el dispositivo. Presiona el botón de encendido para colocar el dispositivo en modo de suspensión (el cual bloquea el dispositivo). A continuación, vuelve a presionar el botón de encendido para activar la pantalla y desbloquear el dispositivo.
Tarjeta SD
T-SD-Card Usabilidad:UX

Realiza pruebas de funcionalidad principal con la app instalada en la tarjeta SD del dispositivo (si la app admite este método de instalación).

Para mover la app a una tarjeta SD, consulta la Configuración de la app.

Interfaz de usuario
T-UI:Transiciones UI:Parity,
UI:Fullscreen,
UI:Transitions

Desde cada una de las pantallas de la app, gira el dispositivo entre la orientación horizontal y vertical, y los estados plegado y desplegado, al menos tres veces.

Verifica que la app haga lo siguiente:
  • Proporciona paridad de funciones en todas las orientaciones de pantalla y estados de plegado
  • Ocupa la ventana de la app en todas las orientaciones de pantalla y estados de plegado, y no está en formato letterbox.
  • Mantiene el estado y no presenta problemas de renderización durante las transiciones rápidas entre las orientaciones y el plegado y desplegado del dispositivo
Calidad visual
T-Visual:Display Visual:Display Usa todas las funciones de tu app. Verifica que todos los elementos visuales, incluidos los gráficos, el texto, las imágenes y otros elementos de la IU, no tengan distorsión, esfumado ni pixelado.
T-Visual:Legibilidad Visual:Readability

Revisa todos los bloques de texto de la app. Verifica que la longitud de la línea de texto y del bloque de texto se limite a entre 45 y 75 caracteres (incluidos los espacios) para garantizar la legibilidad.

Verifica lo siguiente:
  • La composición es aceptable en todos los factores de forma compatibles
  • No se visualizan letras ni palabras cortadas.
  • No se visualizan ajustes automáticos de línea incorrectos en botones ni íconos.
  • Espacio suficiente entre el texto y los elementos circundantes
T-Visual:Temas Visual:Themes Verifica que todo el texto sea legible en los temas claros y oscuros. Verifica que todos los elementos visuales sean claramente discernibles y estéticos en los temas claros y oscuros.
Navegación
T-Nav:Back Nav:BackButton,
Nav:BackGesture

Navega a todas las partes de la app (pantallas, diálogos, configuraciones y flujos de usuarios).

Desde cada una de las pantallas de la app, presiona el botón Atrás o usa el gesto para deslizar hacia atrás. La app debe navegar a la pantalla anterior o principal.

T-Nav:State Nav:State Desde cada una de las pantallas de la app, presiona la tecla Inicio del dispositivo o desliza el dedo hacia arriba en la navegación por gestos y vuelve a iniciar la app desde la pantalla Todas las apps.
Notificaciones
T-Notify:Info Notify:Info,
Notify:Messaging
Inicia la app y observa en el panel lateral de notificaciones todos los tipos de notificaciones que la app puede mostrar. Cuando sea posible (en Android 4.1 y versiones posteriores), expande las notificaciones y presiona todas las acciones disponibles.
Accesibilidad
T-Access:Targets Access:Targets Verifica que los objetivos táctiles mantengan una posición y un tamaño coherentes y accesibles para todos los tamaños y las configuraciones de pantalla. Para obtener información sobre accesibilidad, consulta la Prueba de accesibilidad.
T-Access:Contrast Acceso:Contraste Verifica el contraste de todos los elementos visuales.
T-Access:Description Access:Description Verifica que todos los elementos de la IU, excepto TextView, tengan descripciones de contenido.

Funcionalidad

ID Función Descripción
Audio
T-Audio:Init Audio:Init Inicia la reproducción de audio. Verifica que, en un segundo, la app comience a reproducir el audio o proporcione un indicador visual de que los datos de audio se están preparando para la reproducción.
T-Audio:Focus Audio:Focus Inicia la reproducción de audio. La app debe solicitar el foco de audio. Cuando se detiene la reproducción de audio, la app debe liberar el foco de audio (lo que sucede automáticamente en las apps que se segmentan para Android 12 (nivel de API 31) y versiones posteriores).
T-Audio:Interrupt Audio:Interrupt Inicia la reproducción de audio. Inicia la reproducción de audio en otra app. Tu app debe responder al cambio en el foco de audio y detener la reproducción de audio o reducir el volumen de reproducción.
T-Audio:Background Audio:Segundo plano Inicia la reproducción de audio. Interactúa con otra app que no sea de audio como app en primer plano. La app debería seguir reproduciendo audio en segundo plano.
T-Audio:Notification Audio:Notification Inicia la reproducción de audio. Interactúa con otra app que no sea de audio como la app en primer plano. Verifica que tu app siga reproduciendo audio en segundo plano y que haya creado una notificación con el estilo MediaStyle. Consulta Cómo interactuar correctamente con los controles de contenido multimedia.
T-Audio:Resume Audio:Reanudar Inicia la reproducción de audio. Interactúa con otra app que no sea de audio como app en primer plano. Interactúa con tu app para que sea la app principal. El audio debería reanudarse o el volumen debería restablecerse. De lo contrario, la app debe indicarle al usuario que la reproducción está pausada.
T-Video:PiP Video:PiP Activa la reproducción de video en modo de pantalla en pantalla de la app.
T-Video:Encoding Video:Encoding Verifica que la app codifique el video con el estándar de compresión de video HEVC.
Uso compartido
Sharing:Sheet Crea un intent y llama a startActivity() con el intent como argumento para iniciar una actividad. Consulta Cómo usar Android Sharesheet. Tu app debería mostrar Android Sharesheet.
Servicios en segundo plano
CR-6 Antecedentes:Servicios

Usa todas las funciones principales de tu app y verifica que no se inicien servicios en segundo plano de larga duración.

Cambia a otra app para enviar la tuya a segundo plano. Ve a Configuración y comprueba si tu app tiene servicios ejecutándose mientras se encuentra en segundo plano. En Android 4.0 y versiones posteriores, ve a la pantalla Apps y busca la app en la pestaña En ejecución.

Rendimiento y estabilidad

ID Función Descripción
Rendimiento
T- Performance:Startup Performance:Startup Inicia tu app. Verifica que se cargue rápidamente o que proporcione un indicador de progreso o una señal similar si tarda más de dos segundos en cargarse.
T-Performance:FPS Rendimiento:FPS Usa todas las funciones principales de tu app y verifica que se renderice a, al menos, 60 fotogramas por segundo. Usa la opción Profile HWUI rendering para probar tu app.
T-Performance:Strict Rendimiento:Estricto

Habilita StrictMode en tu app y usa todas las funciones principales. Verifica que la app no produzca ninguna advertencia de rendimiento de StrictMode, es decir, que no se vean destellos rojos cuando se pruebe la app. Los destellos rojos indican un comportamiento inadecuado en relación con el almacenamiento, el acceso a la red o la administración de la memoria (como las fugas de memoria).

Presta mucha atención a la recolección de elementos no utilizados y su impacto en la experiencia del usuario.

Estabilidad
T-Stability:ANR Estabilidad:ANR Usa todas las funciones principales de tu app y verifica que no falle ni bloquee el subproceso de IU, lo que provocaría errores ANR (Android no responde). Revisa el informe previo al lanzamiento de Google Play para identificar posibles problemas de estabilidad.
SDK
T-SDK:Platform SDK:Platform Ejecuta tu app en la versión pública más reciente de la plataforma de Android. Usar todas las funciones principales Verifica que la app no falle y que se ejecute sin pérdida de funcionalidad principal.
T-SDK:Latest SDK:Target,
SDK:Compile
Revisa el archivo de manifiesto de Android y la configuración de compilación para asegurarte de que la aplicación esté compilada con la última versión disponible del SDK (targetSdk y compileSdk).
T-SDK:3P SDK:3P Revisa el archivo build.gradle de tu app para comprobar si hay dependencias desactualizadas.
T-SDK:Non SDK:Non Usa la herramienta lint de Android Studio para detectar el uso de interfaces que no pertenezcan al SDK. Consulta Restricciones en interfaces que no pertenecen al SDK para conocer otros métodos de prueba.
T-SDK:Debug SDK:Debug Revisa el archivo build.gradle de tu app para ver si incluye bibliotecas de depuración.
Batería
T-Battery:Manage Batería:Administrar

Usa todas las funciones principales de la app en los modos Descanso y App Standby. Verifica que las alarmas, los temporizadores, las notificaciones y las sincronizaciones funcionen correctamente en el período de mantenimiento de Descanso y cuando la app salga del modo App Standby.

Prueba el comportamiento de Descanso y App Standby con comandos de ADB (consulta Pruebas con Descanso y App Standby para conocer los requisitos y lineamientos).

Para diagnosticar el agotamiento inesperado de la batería, usa el Generador de perfiles de energía de Android Studio o la herramienta Battery Historian combinados con el trabajo en segundo plano planificado.

Privacidad y seguridad

ID Función Descripción
Permisos
T-Permissions:Min Permisos:Min Revisa todos los permisos que tu app requiere en el archivo de manifiesto, el tiempo de ejecución y la configuración de la app en el dispositivo (Configuración > Información de la app).
T-Permissions:Sensitive Permisos:Sensibles Usar cualquier función de la app que solicite permisos Verifica que la app solicite permiso para acceder a datos o servicios sensibles solo para los casos de uso principales de la app. Verifica que las implicaciones de otorgar permiso a datos y servicios sensibles se comuniquen claramente al usuario.
T-Permissions:Runtime Permisos:Tiempo de ejecución Usa todas las funciones de tu app que requieran permisos. Verifica que los permisos se soliciten de forma diferida, es decir, solo cuando se accede a las funciones, en lugar de hacerlo durante el inicio de la app.
T-Permissions:Explain Permisos:Explain Usa todas las funciones de tu app que requieran permisos. Verifica que la app le explique al usuario por qué se necesitan los permisos.
T-Permissions:Degrade Permisos:Degrade Usa todas las funciones de tu app que requieran permisos. Rechaza o revoca los permisos. Verifica que la app proporcione un caso de uso alternativo y siga funcionando.
Datos y archivos
T-Data:Sensitive Data:Sensitive Revisa todos los datos almacenados en el almacenamiento interno. Verifica que los datos almacenados de forma externa no sean sensibles.
T-Data:Handling Data:Sensitive Revisa cómo se controlan y procesan los datos que se cargan desde el almacenamiento externo.
T-Data:Log Data:Log Usa todas las funciones principales de la app mientras supervisas el registro del dispositivo. Verifica que no se registre información privada del usuario.
T-Data:IDs Datos:IDs Usar todas las funciones principales de la app Verifica que la app no use ningún ID de hardware, como el IMEI, para fines de identificación.
Identidad
T-Identity:Hints Identity:Hints Usar todas las funciones de la app que requieren la entrada del usuario Verifica que la app proporcione sugerencias para autocompletar los campos de entrada de datos, como las credenciales de la cuenta y otra información sensible.
T-Identity:CredMan Identidad:CredMan Accede a tu app. Verifica que la app integre Credential Manager para Android para una experiencia de acceso que unifique la compatibilidad con llaves de acceso, identidades federadas y contraseñas.
T-Identity:Bio Identity:Bio Usar todas las funciones de la app que requieren autenticación Verifica que la app proteja las transacciones financieras o la información sensible, como los documentos importantes de los usuarios, con la autenticación biométrica.
Componentes de la app
T-Components:Export Componentes:Exportar Revisa todos los componentes de la aplicación definidos en el archivo de manifiesto de Android para el estado de exportación apropiado. La propiedad de exportación debe establecerse explícitamente para todos los componentes.
T-Components:Permissions Componentes:Permissions Revisa todos los permisos que tu app requiere en el archivo de manifiesto, el tiempo de ejecución y la configuración de la app en el dispositivo (Configuración > Información de la app).
T-Components:Protección Componentes:Protección Revisa todos los proveedores de contenido definidos en el archivo de manifiesto de Android. Asegúrate de que cada proveedor tenga un protectionLevel adecuado.
Redes
T-Network:Tráfico Network:Traffic Declara una configuración de seguridad de red que inhabilite el tráfico de texto simple y, luego, prueba la app.
T-Network:Config Network:Config Revisa la configuración de seguridad de red de la app. Verifica que no se produzca ningún error de configuración en las verificaciones de lint.
T-Network:Play Network:Play Verifica que el proveedor de seguridad se inicialice cuando se inicie la aplicación para los Servicios de Google Play.
WebViews
T-WebViews:Config WebViews:Config Revisa la configuración de seguridad de red de la app. Verifica que no se produzca ningún error de configuración en las verificaciones de lint.
T-WebViews:JavaScript WebViews:JavaScript Para cada WebView, navega a una página que requiera JavaScript.
T-WebViews:Nav WebViews:Config,
WebViews:JavaScript
En cada WebView, intenta navegar a sitios y contenido que tu app no cargue de forma directa.
Ejecución
T-Execution:Bundles Ejecución:Bundles Verifica que la app use Android App Bundles y no cargue código de forma dinámica desde fuera del APK de la app.
Criptografía
T-Crypto:Algorithms Criptografía:Algoritmos Verifica que la app use algoritmos criptográficos y un generador de números aleatorios sólidos proporcionados por la plataforma. Además, verifica que la app no implemente algoritmos personalizados.

Google Play

ID Función Descripción
Políticas
T-Play:Policies Play:Policies,
Play:Maturity,
Play:Bugs
Inicia sesión en Google Play Console a fin de revisar tu perfil de desarrollador, la descripción de la app, las capturas de pantalla, el gráfico de funciones, la clasificación del contenido y los comentarios de los usuarios.
Página de detalles de la app
T-Play:Graphics Play:Graphics Descarga tu gráfico de funciones y las capturas de pantalla, y reduce su tamaño de modo que coincidan con el de la pantalla de los dispositivos y factores de forma objetivo.
T-Play:Assets Play:Graphics,
Play:NonAndroid,
Play:Misleading
Revisa todos los recursos gráficos, el contenido multimedia, el texto, las bibliotecas de códigos y otros materiales incluidos en la descarga de la app o el archivo de expansión.

Archivar

Versiones anteriores de los principales lineamientos de calidad para apps: