Lineamientos de calidad básicos de las apps

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

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

Calidad de las apps adaptables

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 vehículos, TVs y XR. Los modos de ventanas, como la pantalla dividida y el modo de ventanas de escritorio, permiten que las apps se ejecuten en partes de la pantalla que se pueden cambiar de tamaño.

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

  • Crea apps optimizadas para todos los factores de forma y tamaños de pantalla
  • Obtén una clasificación más alta para tus apps en las fichas y la búsqueda de Google Play
  • Adquiere más usuarios y aumenta la retención de usuarios

Lineamientos

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

Experiencia del usuario

Los patrones de interacción y diseño visual estándar de Android proporcionan una experiencia del usuario coherente e intuitiva.

Usa los 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 un aspecto moderno de Android junto con la coherencia de la IU en todas las versiones de Android.

Usabilidad

ID Pruebas Descripción
Consistent_UX T-Consistent_UX,
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.
App_Switcher T-App_Switcher,
T-SD_Card
La app pasa a segundo plano cuando el enfoque cambia a otra app y vuelve a primer plano cuando se reactiva desde el selector de apps Recientes.
Sleep_Resume T-Sleep_Resume,
T-SD_Card
Cuando la app está en primer plano, se detiene cuando el dispositivo entra en modo de suspensión y se reanuda cuando se activa.
Lock_Resume T-Lock_Resume,
T-SD_Card
Cuando la app está en primer plano, se pausa cuando el dispositivo está bloqueado y se reanuda cuando se desbloquea.

Interfaz de usuario

ID Pruebas Descripción
Display_State_Parity T-Orientation_Transitions

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

Fullscreen_Display T-Orientation_Transitions

La app ocupa la ventana de la app en ambas orientaciones y no está en formato letterbox debido a cambios de configuración, como 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.

Orientation_Transitions T-Orientation_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 ni perder el estado.

Calidad visual

ID Pruebas Descripción
Graphic_Quality T-Graphic_Quality

La app muestra gráficos, texto, imágenes y otros elementos de la IU sin distorsión, desenfoque ni pixelación perceptibles.

  • La app usa elementos de diseño vectoriales siempre que es posible.
  • La app usa gráficos de alta calidad para todos los tamaños de pantalla y factores de forma de destino
  • No hay alias en los bordes de los menús, los botones y otros elementos de la IU.
Line_Length T-Line_Length La app garantiza la legibilidad del texto y los bloques de texto limitando la longitud de las líneas a entre 45 y 75 caracteres (incluidos los espacios) para cada uno de los idiomas admitidos de la app.
Theme_Support T-Theme_Support El contenido de la app y todo el contenido web al que esta accede admiten los temas claro y oscuro.
ID Pruebas Descripción
Back_Button_Nav T-Back_Nav La app admite la navegación estándar con el botón Atrás y no usa ningún mensaje personalizado en pantalla para el botón Atrás.
Back_Gesture_Nav T-Back_Nav La app admite la navegación por gestos para volver atrás y a la pantalla principal.
State_Preservation T-State_Preservation,
T-Back_Nav

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

Cuando vuelve al primer plano, la app restablece el estado preservado y las transacciones con estado pendientes. Algunos ejemplos incluyen cambios en los campos editables, el progreso del juego, los menús, los videos y otras secciones de la app.

  • Cuando se reanuda la app desde el selector de apps Recientes, esta devuelve al usuario al estado exacto en el que se usó por última vez.
  • Cuando se reanuda la app después de que el dispositivo se activa del estado de suspensión (bloqueado), la app devuelve al usuario al estado exacto en el que se usó por última vez.
  • Cuando se reinicia la app desde Inicio o Todas las apps, debe realizar una de las siguientes acciones, según el tiempo que haya transcurrido desde la última vez que se usó:
    • Si la app se usó por última vez hace poco tiempo (minutos), restablece su estado al anterior con la mayor precisión posible.
    • Si transcurrió más tiempo desde la última vez que se usó la app, intenta restablecerla lo más cerca posible de su estado anterior o iniciarla desde su pantalla principal o algún otro estado predeterminado.

Notificaciones

ID Pruebas Descripción
Notification_Quality T-Notification_Quality

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.
Conversation_Quality T-Notification_Quality

Para apps de mensajería, aplicaciones sociales y conversaciones:

Accesibilidad

ID Pruebas Descripción
Touch_Target_Size T-Touch_Target_Size Los objetivos táctiles tienen al menos 48 dp. Consulta los lineamientos de tamaños de objetivos de Material Design.
Visual_Contrast T-Visual_Contrast

El texto y el contenido en 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.

Content_Description T-Content_Description Describe cada elemento de la IU, excepto TextView, con contentDescription.

Funcionalidad

Tu app debería implementar el siguiente comportamiento funcional.

Audio

ID Pruebas Descripción
Audio_Playback_Start T-Audio_Playback_Start

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

  • Iniciar la reproducción del audio
  • Proporciona un indicador visual de que se están preparando los datos de audio.
Audio_Focus_Request T-Audio_Focus_Request La app debe solicitar el foco de audio cuando se inicia la reproducción de audio y abandonarlo cuando se detiene.
Audio_Focus_Change T-Audio_Focus_Change La app debe controlar las solicitudes de otras apps para obtener el foco de audio. Por ejemplo, una app podría bajar el volumen de reproducción cuando otra reproduzca contenido de voz.
Audio_Playback_Background T-Audio_Playback_Background

La app debe admitir la reproducción en segundo plano.

La app debe usar un servicio en primer plano para evitar que el sistema finalice el proceso de la app una vez que esta ya no sea visible. La app también debe mostrar una notificación persistente que no se pueda descartar en la barra de estado o en la pantalla de bloqueo para informar al usuario que la app se está ejecutando.

Los usuarios deben poder controlar la reproducción con los controles de la notificación o de la pantalla de bloqueo, o bien con los controles de un accesorio conectado.

Audio_Notification_Style T-Audio_Notification_Style Cuando la app reproduce audio en segundo plano, debe crear una notificación con diseño de MediaStyle.
Audio_Playback_Resume T-Audio_Playback_Resume Si la app está en segundo plano y el audio está pausado, este se reanuda cuando la app vuelve al primer plano, o bien la app debe indicarle al usuario que la reproducción está en estado de pausa.

Video

ID Pruebas Descripción
Video_PiP T-Video_PiP Si la app reproduce videos, debe admitir la reproducción en pantalla en pantalla.
Video_Encoding T-Video_Encoding Si la app codifica video, debe hacerlo con el estándar de compresión de video HEVC.
Video_Playback_Background T-Video_Playback_Background

La app admite la reproducción de video en segundo plano cuando no es la app que se encuentra en primer plano, incluso cuando la ventana de la app está en las siguientes condiciones:

  • Minimizada
  • Detrás de otras ventanas o de la IU del sistema (por ejemplo, el panel de notificaciones o la pantalla principal o de bloqueo)
  • Fuera de la pantalla visible del escritorio

Uso compartido

ID Pruebas Descripción
System_Sharesheet T-System_Sharesheet 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

ID Pruebas Descripción
Background_Service_Optimization T-Background_Service_Optimization

La app evita que se ejecuten servicios innecesariamente largos en segundo plano para garantizar el funcionamiento correcto del dispositivo del usuario.

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

Los siguientes son ejemplos de usos deficientes 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.

Rendimiento

ID Pruebas Descripción
App_Startup_Time T-App_Startup_Time La app se carga rápidamente o proporciona comentarios en pantalla al usuario (un indicador de progreso o un indicador similar) si la app tarda más de dos segundos en cargarse.
Rendering_Performance T-Rendering_Performance La app renderiza fotogramas cada 16 milisegundos (o menos) para mostrar al menos 60 fotogramas por segundo. Para obtener ayuda con los problemas de renderización, consulta Renderización lenta.
StrictMode_Compliance T-StrictMode_Compliance Con StrictMode habilitado (consulta la sección de pruebas de StrictMode), no se ven destellos rojos (advertencias de rendimiento de StrictMode) cuando se prueba la app.

Estabilidad

ID Pruebas Descripción
Stability_ANR T-Stability_ANR La app no falla ni bloquea el subproceso de IU, lo que causa errores de ANR (Aplicación 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 de Android vitals en Google Play Console.

SDK

ID Pruebas Descripción
Android_Platform_Compatibility T-Android_Platform_Compatibility 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.
Target_SDK_Version T-Target_SDK_Version La app se orienta al SDK de Android más reciente necesario para alinearse con los requisitos de Google Play. Para ello, se establece el valor targetSdk en el archivo build.gradle del módulo de la app.
Compile_SDK_Version T-Target_SDK_Version 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_Maintenance T-SDK_Maintenance,
T-Non_SDK_Interfaces

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

Para los SDKs de Google, usa 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.

Non_SDK_Interfaces T-Non_SDK_Interfaces La app no usa interfaces que no pertenecen al SDK.
Production_Build_Quality T-Production_Build_Quality 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

ID Pruebas Descripción
Power_Management T-Power_Management

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 maneja los datos del usuario y la información personal de forma segura, y proporciona niveles de permiso adecuados.

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

Permisos

ID Pruebas Descripción
Minimize_Permissions T-Minimize_Permissions La app solo solicita los permisos mínimos 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 una precisa, si es posible. Consulta Cómo minimizar las solicitudes de permiso.
Sensitive_Permissions T-Sensitive_Permissions

La app solicita permiso de acceso a datos sensibles (como los grupos de permisos de SMS o llamadas o la ubicación) o a servicios que cuesten dinero (como el Teléfono o los SMS) solo si están directamente relacionados con los casos de uso principales de la app. Las consecuencias relacionadas con estos permisos deberán divulgarse de manera destacada al usuario.

Según cómo tu app use los permisos, es posible que haya una forma alternativa de cumplir con el caso de uso de la 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.

Runtime_Permissions T-Runtime_Permissions La app solicita permisos de tiempo de ejecución cuando se solicita la funcionalidad, en lugar de hacerlo durante el inicio de la app.
Permission_Rationale T-Permission_Rationale La app explica claramente por qué se necesitan los permisos.
Graceful_Degradation T-Graceful_Degradation 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

ID Pruebas Descripción
Sensitive_Data_Storage T-Sensitive_Data_Storage,
T-Sensitive_Data_Handling
Todos los datos sensibles se almacenan en el almacenamiento interno de la app.
Sensitive_Data_Logging T-Sensitive_Data_Logging No se registran datos personales o sensibles de los usuarios en el registro del sistema ni en un registro específico de la app.
Hardware_IDs T-Hardware_IDs La app no deberá usar IDs de hardware que no se puedan restablecer, como el IMEI, para fines de identificación.

Copia de seguridad y restablecimiento de datos

ID Pruebas Descripción
App_Data_Backup T-App_Data_Backup

La app conserva los datos, la configuración y el estado del usuario en las copias de seguridad en la nube y las transferencias de un dispositivo a otro (D2D).

Implementa la Copia de seguridad automática y configura android:dataExtractionRules para garantizar un restablecimiento de datos sin problemas cuando configures un dispositivo nuevo o reinstales la app.

App_Logins_Restoration T-App_Logins_Restoration

La app restablece automáticamente las cuentas de usuario y el estado de acceso cuando un usuario configura un dispositivo nuevo.

Implementa Restablecimiento de credenciales con el Administrador de credenciales para volver a autenticar a los usuarios automáticamente sin forzar el acceso manual ni los flujos de recuperación de la cuenta.

Identidad

ID Pruebas Descripción
Autofill_Hints T-Autofill_Hints La app brinda sugerencias para autocompletar las credenciales de cuenta y otra información sensible, como datos de tarjetas de crédito, direcciones físicas y números de teléfono.
Credential_Manager T-Credential_Manager La app integra el Administrador de credenciales para Android para brindar una experiencia de acceso fluida que unifica la compatibilidad con llaves de acceso, identidades federadas y contraseñas.
Biometric_Authentication T-Biometric_Authentication 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 aplicación

ID Pruebas Descripción
Component_Export T-Component_Export

La app establece el atributo android:exported de forma explícita para todas las actividades, los servicios, los receptores de transmisiones 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.

Component_Permissions T-Component_Permissions

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

Component_Protection T-Component_Protection

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

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

Redes

ID Pruebas Descripción
Network_Security_Traffic T-Network_Security_Traffic Todo el tráfico de red se envía mediante SSL.
Network_Security_Configuration T-Network_Security_Configuration La app declara una configuración de seguridad de red.
Security_Provider_Initialization T-Security_Provider_Initialization Si la app usa los Servicios de Google Play, se inicializará el proveedor de seguridad cuando lo haga la app.

WebViews

ID Pruebas Descripción
WebView_Asset_Loader T-WebView_Asset_Loader,
T-WebView_Navigation
No uses setAllowUniversalAccessFromFileURLs() para acceder al contenido local. En su lugar, usa WebViewAssetLoader.
WebView_JavaScript T-WebView_JavaScript,
T-WebView_Navigation

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

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

Ejecución

ID Pruebas Descripción
App_Bundles T-App_Bundles

La app no carga código de forma dinámica 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

ID Pruebas Descripción
Cryptographic_Algorithms T-Cryptographic_Algorithms La app usa algoritmos criptográficos y un generador de números al azar sólidos proporcionados por la plataforma. Además, la app no implementa algoritmos personalizados.

Google Play

Habilitar la publicación de tu app en Google Play

Políticas

ID Pruebas Descripción
Play_Content_Policies T-Play_Content_Policies La app cumple estrictamente con las condiciones de la Política de Contenido para Desarrolladores de Google Play, no ofrece contenido inapropiado y no usa la propiedad intelectual ni la marca de terceros.
Play_Content_Rating T-Play_Content_Policies El nivel de madurez de la app se establece de forma adecuada según los Lineamientos de Clasificación del Contenido.

Página de detalles de la app

ID Pruebas Descripción
Play_Feature_Graphic T-Play_Feature_Graphic,
T-Play_Graphic_Assets

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

  • La ficha de la app incluye una imagen destacada de alta calidad
  • El gráfico de funciones no contiene imágenes de dispositivos, capturas de pantalla ni texto pequeño que sea ilegible cuando se reduce la escala y se muestra en el tamaño de pantalla más pequeño al que se orienta tu app.
  • El gráfico de funciones no se parece a un anuncio.
Play_Device_References T-Play_Graphic_Assets Las capturas de pantalla y los videos de la app no muestran dispositivos que no sean Android ni hacen referencia a ellos.
Play_Misleading_Content T-Play_Graphic_Assets Las capturas de pantalla o los videos de la app no representan el contenido ni la experiencia de la app de forma engañosa.

Asistencia al usuario

ID Pruebas Descripción
Play_User_Reviews T-Play_Content_Policies Los errores comunes que informan los usuarios en la pestaña Opiniones de la página de Google Play se solucionan si se pueden reproducir y ocurren 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 con emuladores: Android Emulator es una excelente manera de probar tu app en diferentes versiones de Android y resoluciones de pantalla. Configura dispositivos emulados (AVD) 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 de 9.94" (2,560 px x 1,800 px)
    • Prueba 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 realices pruebas en todos los dispositivos que están en el mercado. Enfócate en una pequeña cantidad de dispositivos representativos, incluso usando uno o dos dispositivos por factor de forma.

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

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

Para obtener más orientación sobre las pruebas, incluidas las pruebas de unidades, las pruebas de integración y las pruebas de IU, consulta Conceptos básicos de las pruebas de apps para Android.

StrictMode

Para realizar pruebas de rendimiento, habilita StrictMode en tu app. Usa StrictMode para detectar operaciones que podrían afectar el rendimiento, los accesos a la red y las lecturas y escrituras de archivos. Busca operaciones potencialmente problemáticas tanto en el subproceso principal como en otros subprocesos.

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

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

Pruebas

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

Experiencia del usuario

Realiza pruebas para garantizar una experiencia del usuario coherente e intuitiva.

Usabilidad

ID Función Descripción
T-Consistent_UX Consistent_UX

Navega a todas las partes de la app: todas las pantallas, los diálogos, la configuración y todos los flujos de usuarios.

Haz lo siguiente:
  • 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-App_Switcher App_Switcher En cada pantalla de la app, cambia a otra app en ejecución y, luego, vuelve a la app que se está probando con el selector de apps Recientes.
T-Sleep_Resume Sleep_Resume 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-Lock_Resume Lock_Resume 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

ID Función Descripción
T-SD_Card Consistent_UX

Realiza pruebas de la funcionalidad principal con la app instalada en la tarjeta SD de un 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

ID Función Descripción
T-Orientation_Transitions Display_State_Parity,
Fullscreen_Display,
Orientation_Transitions

Desde cada una de las pantallas de la app, rota 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 tiene problemas de renderización durante las transiciones rápidas entre las orientaciones y el plegado y desplegado del dispositivo

Calidad visual

ID Función Descripción
T-Graphic_Quality Graphic_Quality 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 estén distorsionados, desenfocados ni pixelados.
T-Line_Length Line_Length

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

Verifica lo siguiente:
  • La composición es aceptable en todos los factores de forma compatibles
  • No debe haber letras ni palabras cortadas.
  • No hay ajustes de línea incorrectos en los botones o íconos.
  • Espaciado suficiente entre el texto y los elementos circundantes
T-Theme_Support Theme_Support Verifica que todo el texto sea legible en los temas claro y oscuro. Verifica que todos los elementos visuales se distingan con claridad y sean estéticos en los temas claro y oscuro.
ID Función Descripción
T-Back_Nav Back_Button_Nav,
Back_Gesture_Nav

Navega a todas las partes de la app: todas las pantallas, los diálogos, la configuración y todos los flujos de usuarios.

En cada pantalla de la app, presiona el botón Atrás o usa el gesto de deslizar hacia atrás. La app debería navegar a la pantalla anterior o a la principal.

T-State_Preservation State_Preservation En cada pantalla de la app, presiona la tecla Inicio del dispositivo o desliza el dedo hacia arriba en la navegación por gestos y, luego, vuelve a iniciar la app desde la pantalla Todas las apps.

Notificaciones

ID Función Descripción
T-Notification_Quality Notification_Quality,
Conversation_Quality
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

ID Función Descripción
T-Touch_Target_Size Touch_Target_Size 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-Visual_Contrast Visual_Contrast Verifica el contraste de todos los elementos visuales.
T-Content_Description Content_Description Verifica que todos los elementos de la IU, excepto TextView, tengan descripciones de contenido.

Funcionalidad

Verifica que tu app implemente el siguiente comportamiento funcional.

Audio

ID Función Descripción
T-Audio_Playback_Start Audio_Playback_Start Iniciar 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_Request Audio_Focus_Request Iniciar la reproducción de audio La app debe solicitar el foco de audio. Cuando se detiene la reproducción de audio, la app debe renunciar al foco de audio (lo que sucede automáticamente en las apps que se orientan a Android 12 [nivel de API 31] y versiones posteriores).
T-Audio_Focus_Change Audio_Focus_Change Iniciar la reproducción de audio Inicia la reproducción de audio en otra app. Tu app debería responder al cambio en el foco de audio y detener la reproducción de audio o reducir el volumen de reproducción.
T-Audio_Playback_Background Audio_Playback_Background

Iniciar la reproducción de audio Interactúa con otra app que no sea de audio como la app en primer plano. La app debería seguir reproduciendo audio en segundo plano y mostrar una notificación en la barra de estado. Verifica que puedas administrar la reproducción con los controles que se muestran en la notificación.

Bloquea la pantalla del dispositivo. La app debería seguir reproduciendo audio en segundo plano y mostrar una notificación en la pantalla de bloqueo. Verifica que puedas administrar la reproducción con los controles que se muestran en la notificación.

T-Audio_Notification_Style Audio_Notification_Style Iniciar 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 de MediaStyle. Consulta Cómo interactuar correctamente con los controles multimedia.
T-Audio_Playback_Resume Audio_Playback_Resume Iniciar la reproducción de audio Interactúa con otra app que no sea de audio como la 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 debería indicarle al usuario que la reproducción está pausada.

Video

ID Función Descripción
T-Video_PiP Video_PiP Activa la reproducción de video de la app en el modo de pantalla en pantalla.
T-Video_Encoding Video_Encoding Verifica que la app codifique el video con el estándar de compresión de video HEVC.
T-Video_Playback_Background Video_Playback_Background Inicia la reproducción del video. Minimiza la ventana de la app y abre otra para mover la ventana de la app al segundo plano. En dispositivos compatibles con computadoras de escritorio, mueve la ventana de la app fuera del escritorio visible. Verifica que la reproducción del video continúe sin interrupciones en todos los casos.

Uso compartido

ID Función Descripción
T-System_Sharesheet System_Sharesheet Crea un intent y, luego, inicia una actividad llamando a startActivity() con el intent como argumento. Consulta Cómo usar Android Sharesheet. La app debería mostrar Android Sharesheet.

Servicios en segundo plano

ID Función Descripción
T-Background_Service_Optimization Background_Service_Optimization

Usa todas las funciones principales de tu app. 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 verifica si tu app tiene servicios que se ejecutan 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

Verifica el rendimiento, la estabilidad y los elementos visuales con precisión de píxeles.

Rendimiento

ID Función Descripción
T-App_Startup_Time App_Startup_Time Inicia la app. Verifica que se cargue rápidamente o que proporcione un indicador de progreso o un aviso similar si tarda más de dos segundos en cargarse.
T-Rendering_Performance Rendering_Performance Usa todas las funciones principales de tu app. Verifica que la app renderice al menos 60 fotogramas por segundo. Usa la opción Perfil procesamiento HWUI para probar tu app.
T-StrictMode_Compliance StrictMode_Compliance

Habilita StrictMode en tu app y usa todas las funciones principales. Verifica que la app no produzca advertencias 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

ID Función Descripción
T-Stability_ANR Stability_ANR Usa todas las funciones principales de tu app. Verifica que no falle ni bloquee el subproceso de IU, lo que causa errores de ANR (Aplicación no responde). Revisa el informe previo al lanzamiento de Google Play para identificar posibles problemas de estabilidad.

SDK

ID Función Descripción
T-Android_Platform_Compatibility Android_Platform_Compatibility Ejecuta tu app en la versión pública más reciente de la plataforma de Android. Usa todas las funciones principales. Verifica que la app no falle y se ejecute sin perder su funcionalidad principal.
T-Target_SDK_Version Target_SDK_Version,
Compile_SDK_Version
Revisa el archivo de manifiesto de Android y la configuración de compilación para asegurarte de que la aplicación se compile con el SDK más reciente disponible (targetSdk y compileSdk).
T-SDK_Maintenance SDK_Maintenance Revisa el archivo build.gradle de tu app para ver si hay dependencias desactualizadas.
T-Non_SDK_Interfaces Non_SDK_Interfaces 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 métodos de prueba alternativos.
T-Production_Build_Quality Production_Build_Quality Revisa el archivo build.gradle de tu app para ver si incluye bibliotecas de depuración.

Batería

ID Función Descripción
T-Power_Management Power_Management

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 la ventana de mantenimiento de Descanso y cuando la app salga del modo App Standby.

Prueba el comportamiento de los modos Descanso y App Standby con comandos de ADB (consulta Pruebas con los modos Descanso y App Standby para conocer los requisitos y los 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 junto con el trabajo en segundo plano planificado.

Privacidad y seguridad

Prueba las protecciones de privacidad y seguridad que esperan los usuarios.

Permisos

ID Función Descripción
T-Minimize_Permissions Minimize_Permissions Revisa todos los permisos que requiere tu app en el archivo de manifiesto, en el tiempo de ejecución y en la configuración de la app en el dispositivo (Configuración > Información de la app).
T-Sensitive_Permissions Sensitive_Permissions Usa cualquier función de tu app que solicite permisos. Verifica que la app solicite permiso de acceso a datos o servicios sensibles solo para los casos de uso principales de la app. Verifica que se comuniquen claramente al usuario las implicaciones de otorgar permiso a datos y servicios sensibles.
T-Runtime_Permissions Runtime_Permissions 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 durante el inicio de la app.
T-Permission_Rationale Permission_Rationale 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-Graceful_Degradation Graceful_Degradation 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

ID Función Descripción
T-Sensitive_Data_Storage Sensitive_Data_Storage Revisa todos los datos guardados en el almacenamiento interno. Verifica que los datos almacenados de forma externa no sean sensibles.
T-Sensitive_Data_Handling Sensitive_Data_Storage Revisa cómo se manejan y procesan los datos que se cargan desde el almacenamiento externo.
T-Sensitive_Data_Logging Sensitive_Data_Logging 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-Hardware_IDs Hardware_IDs Usa todas las funciones principales de la app. Verifica que la app no use IDs de hardware, como el IMEI, para fines de identificación.

Copia de seguridad y restablecimiento de datos

ID Función Descripción
T-App_Data_Backup App_Data_Backup

Configura las preferencias locales, las bases de datos y los parámetros de configuración de la app en un dispositivo principal. Realizar una copia de seguridad en la nube o una transferencia de un dispositivo a otro (D2D) a un dispositivo nuevo

Inicia la app en el dispositivo de destino después de la transferencia y verifica que las preferencias locales, el estado de la base de datos y la configuración del usuario se restablezcan correctamente según tus reglas de copia de seguridad automática. Para obtener información detallada sobre los procedimientos de prueba, consulta Cómo probar copias de seguridad y restablecimientos.

T-App_Logins_Restoration App_Logins_Restoration

Configura una sesión con acceso en un dispositivo principal con llaves de acceso, contraseñas o Acceder con Google. Realizar una copia de seguridad en la nube o una transferencia de un dispositivo a otro (D2D) a un dispositivo nuevo

Inicia la app en el dispositivo de destino después de la transferencia y verifica que la autenticación se restablezca automáticamente con las credenciales de restablecimiento sin mostrar pantallas de acceso ni requerir la recuperación de la cuenta. Para conocer los procedimientos de prueba detallados, consulta Prueba las credenciales de restablecimiento.

Identidad

ID Función Descripción
T-Autofill_Hints Autofill_Hints Usa todas las funciones de la app que requieran entradas 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-Credential_Manager Credential_Manager Accede a tu app. Verifica que la app integre el Administrador de credenciales para Android para obtener una experiencia de acceso que unifique la compatibilidad con llaves de acceso, identidad federada y contraseñas.
T-Biometric_Authentication Biometric_Authentication Usa todas las funciones de la app que requieran 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 aplicación

ID Función Descripción
T-Component_Export Component_Export 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-Component_Permissions Component_Permissions Revisa todos los permisos que requiere tu app en el archivo de manifiesto, en el tiempo de ejecución y en la configuración de la app en el dispositivo (Configuración > Información de la app).
T-Component_Protection Component_Protection 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

ID Función Descripción
T-Network_Security_Traffic Network_Security_Traffic Declara una configuración de seguridad de redes que inhabilite el tráfico de texto simple y, luego, prueba la app.
T-Network_Security_Configuration Network_Security_Configuration Revisa la configuración de seguridad de la red de la app. Verifica que no fallen las verificaciones de lint en la configuración.
T-Security_Provider_Initialization Security_Provider_Initialization Verifica que el proveedor de seguridad se inicialice cuando se inicie la aplicación para los Servicios de Google Play.

WebViews

ID Función Descripción
T-WebView_Asset_Loader WebView_Asset_Loader Revisa la configuración de seguridad de la red de la app. Verifica que no fallen las verificaciones de lint en la configuración.
T-WebView_JavaScript WebView_JavaScript Para cada WebView, navega a una página que requiera JavaScript.
T-WebView_Navigation WebView_Asset_Loader,
WebView_JavaScript
En cada WebView, intenta navegar a sitios y contenido que tu app no cargue directamente.

Ejecución

ID Función Descripción
T-App_Bundles App_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

ID Función Descripción
T-Cryptographic_Algorithms Cryptographic_Algorithms Verifica que la app use algoritmos criptográficos y un generador de números aleatorios sólidos proporcionados por la plataforma. También verifica que la app no implemente algoritmos personalizados.

Google Play

Verifica que tu app esté lista para Google Play.

Políticas

ID Función Descripción
T-Play_Content_Policies Play_Content_Policies,
Play_Content_Rating,
Play_User_Reviews
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

ID Función Descripción
T-Play_Feature_Graphic Play_Feature_Graphic 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_Graphic_Assets Play_Feature_Graphic,
Play_Device_References,
Play_Misleading_Content
Revisa todos los recursos gráficos, el contenido multimedia, el texto, las bibliotecas de código y cualquier otro contenido que se incluya en la app o en la descarga del archivo de expansión.

Archivar

Versiones anteriores de los lineamientos de calidad de las apps principales: