The Android Developer Challenge is back! Submit your idea before December 2.

Calidad de las apps principales

Los usuarios de Android esperan apps de alta calidad. La calidad de la app tiene un impacto directo sobre el éxito a largo plazo en términos de instalaciones, calificación y reseñas de los usuarios, interactividad y retención de estos.

Esta página te ayuda a evaluar aspectos principales de calidad en tu app a través de un conjunto compacto de criterios y pruebas asociadas. Todas las apps para Android deben cumplirlos.

Antes de publicar tus apps, somételas a pruebas de acuerdo con estos criterios para garantizar que funcionen bien en diferentes dispositivos, cumplan las normas de Android para navegación y diseño, y estén preparadas para las oportunidades de promoción en Google Play Store. Tu prueba deberá abarcar más de lo que se describe aquí; este documento tiene como objetivo especificar las características de calidad fundamentales que todas las apps deben exhibir, de modo que puedas incluirlas en tus pruebas.

Si estás creando apps para otros dispositivos Android, como tablets o TV, hay pautas de calidad adicionales que deberías tener en cuenta.

Diseño visual e interacción del usuario

Estos criterios permiten que te asegures de que tu app proporcione patrones estándar de diseño visual e interacción para Android, cuando corresponda, a fin de garantizar una experiencia de usuario uniforme e intuitiva.

Área ID Descripción Pruebas
Diseño estándar UX-B1

La app cumple con las pautas de diseño de Android y utiliza patrones e íconos de IU comunes:

  1. La app no redefine la función prevista de un ícono del sistema (como el botón Atrás).
  2. La app no reemplaza un ícono del sistema con un ícono completamente diferente si este activa el comportamiento estándar de la IU.
  3. Si la app proporciona una versión personalizada de un ícono estándar del sistema, el ícono debe parecerse al ícono estándar del sistema y desencadenar el comportamiento estándar del sistema.
  4. La app no redefine ni utiliza de forma inadecuada patrones de la IU de Android, de modo que los íconos o los comportamientos pudieran desorientar o confundir a los usuarios.
CR-all
Navegación UX-N1

La app admite la navegación estándar del sistema con el botón Atrás y no utiliza avisos personalizados en pantalla para el "botón Atrás".

CR-3
UX-N2

Todos los diálogos pueden descartar con el botón Atrás.

CR-3
UX-N3 Al presionar el botón de inicio en cualquier momento, se navega a la pantalla principal del dispositivo. CR-1
Notificaciones UX-S1

Las notificaciones siguen las pautas de diseño de Android. En especial:

  1. Se deben agrupar múltiples notificaciones en un solo objeto, cuando sea posible.
  2. Las notificaciones solo son recurrentes si están relacionadas con eventos actuales (como la reproducción de música o una llamada telefónica).
  3. Las notificaciones no incluyen publicidad ni contenido que no esté relacionado con la función central de la app, a menos que el usuario lo permita.
CR-11
UX-S2

La app utiliza notificaciones únicamente para lo siguiente:

  1. Indicar un cambio de contexto relacionado con el usuario (como un mensaje recibido).
  2. Exponer información o controles relacionados con un evento actual (como la reproducción de música o una llamada telefónica).
CR-11

Funcionalidad

Estos criterios garantizan que tu app proporcione el comportamiento funcional previsto con el nivel adecuado de permisos.

Área ID Descripción Pruebas
Permisos FN-P1 La app solicita solo la cantidad mínima absoluta de permisos necesarios para respaldar la funcionalidad central. SC-4
FN-P2

La app no solicita permisos para acceder a datos confidenciales (como contratos o el registro del sistema) ni a servicios que puedan costarle dinero al usuario (como Teléfono o SMS), a menos que esté relacionado con una capacidad central de la app.

Ubicación de la instalación FN-L1

La app funciona normalmente cuando se la instala en una tarjeta SD (si la app lo admite).

Se recomienda admitir la instalación en tarjetas SD para las apps más grandes (más de 10 MB). Consulta la guía para desarrolladores sobre Ubicación de la instalación de la app para obtener información acerca de los tipos de apps que deben admitir la instalación en tarjetas SD.

SD-1
Audio FN-A1 No se reproduce audio cuando la pantalla está apagada, a menos que sea una función central (por ejemplo, la app es un reproductor de música). CR-7
FN-A2 No se reproduce audio cuando la pantalla está bloqueada, a menos que sea una función central. CR-8
FN-A3 No se reproduce audio en la pantalla principal ni cuando está activa otra app, a menos que sea una función central. CR-1, CR-2
FN-A4 La reproducción de audio continúa cuando la app regresa a primer plano, o le indica al usuario que la reproducción está pausada. CR-1, CR-8
IU y gráficos FN-U1

La app admite tanto la orientación horizontal como la vertical (si fuera posible).

Las orientaciones exponen ampliamente las mismas funciones y acciones, y conservan la paridad funcional. Se aceptan cambios mínimos en el contenido o las vistas.

CR-5
FN-U2

La app utiliza toda la pantalla en ambas orientaciones y no usa formato de pantalla ancha para compensar los cambios de orientación.

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

CR-5
FN-U3

La app resuelve correctamente las transiciones rápidas entre las orientaciones de la pantalla sin presentar problemas.

CR-5
Estado del usuario o la app FN-S1

La app no debe dejar ningún servicio en ejecución mientras se encuentre en segundo plano, a menos que se relacione con una capacidad central.

Por ejemplo, no debe dejar servicios en ejecución para mantener una conexión de red y recibir notificaciones, para mantener una conexión Bluetooth ni para mantener el GPS activado.

CR-6
FN-S2

La app preserva y restaura correctamente el estado del usuario o la app.

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 debe restaurar el estado preservado y toda transacción de estado importante que haya quedado pendiente, como cambios en campos editables, el progreso de un juego, menús, videos y otras secciones de la app o el juego.

  1. 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ó.
  2. Cuando se reanuda la app después de la reactivación del dispositivo (luego de haber estado bloqueado), la app regresa al usuario al estado exacto en que se encontraba la última vez que este la utilizó.
  3. Cuando se reinicia desde el inicio o Todas las apps, la app restaura el estado de la app al estado anterior con la mayor precisión posible.
  4. Cuando se presiona Atrás, la app le da la opción al usuario de guardar el estado de la app o el usuario que, de lo contrario, se perdería al navegar hacia atrás.
CR-1, CR-3, CR-5

Compatibilidad, rendimiento y estabilidad

Estos criterios garantizan que las apps proporcionen la compatibilidad, el rendimiento, la estabilidad y la capacidad de respuesta que los usuarios esperan.

Área ID Descripción Pruebas
Estabilidad PS-S1 La app no falla, no impone el cierre, no se inmoviliza ni funciona de ningún otro modo anormal en ninguno de los dispositivos donde esté instalada. CR-all, SD-1, HA-1
Rendimiento PS-P1 La app se carga rápidamente o le proporciona al usuario información en pantalla (un indicador de progreso o una señal similar) en caso de que demore más de dos segundos en cargarse. CR-all, SD-1
PS-P2 Cuando StrictMode está activado (consulta Prueba StrictMode, a continuación), no hay destellos rojos (advertencias de rendimiento de StrictMode) visibles al ejecutar la app, incluso durante un juego, transiciones de animaciones y la IU, y cualquier otra parte de la app. PM-1
SDK PS-T1 La app se ejecuta en la última versión pública de la plataforma Android sin que se produzca una falla o se pierda la función principal. CR-0
PS-T2 La aplicación se dirige al último SDK estableciendo el valor targetSdk para minimizar el uso de cualquier reserva de compatibilidad proporcionada por la plataforma. SP-1
PS-T3 Se compila la app con el último SDK configurando el valor compileSdk. SD-1
Batería PS-B1 La app admite funciones de administración de energía (Descanso y App Standby) en Android 6.0 y versiones posteriores. Cuando se interrumpe la funcionalidad central por la gestión de energía, solo apps calificadas pueden solicitar una exención. BA-1
Medios PS-M1 La reproducción de música y video es uniforme, sin quiebres, intermitencias ni otros defectos durante el uso y la carga normales de la app. CR-all, SD-1, HA-1
Calidad visual PS-V1

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

  1. La app ofrece gráficos de alta calidad para todos los tamaños de pantalla y factores de forma orientados.
  2. No se observa suavizado en los bordes de los menús, los botones ni otros elementos de la IU.
CR-all
PS-V2

La app muestra texto y bloques de texto de forma aceptable.

  1. La composición es aceptable en todos los factores de forma compatibles.
  2. No se visualizan letras ni palabras cortadas.
  3. No se visualizan ajustes automáticos de línea incorrectos en botones ni íconos.
  4. Hay espacio suficiente entre el texto y los elementos que lo rodean.

Seguridad

Estos criterios garantizan que las apps manejen los datos de los usuarios y la información personal de forma segura.

Además de esta lista de tareas, las apps publicadas en Google Play Store deben cumplir con las políticas de Datos del usuario para proteger la privacidad de las personas.

Área ID Descripción Pruebas
Datos SC-D1 Todos los datos privados se guardan en el almacenamiento interno de la app. SC-1
SC-D2 Todos los datos del almacenamiento externo se verifican antes de acceder a ellos. SC-2
SC-D3

Todos los intents y emisiones siguen recomendaciones seguras.

  1. Los intents son explícitos si se conoce la aplicación de destino.
  2. Los intents garantizan y usan permisos apropiados.
  3. Los intents que contienen datos y cargas útiles se verifican antes de su uso.
SC-D4 No se registran datos personales o confidenciales de los usuarios en el sistema o en el registro específico de la app. SC-10
Componentes de la app SC-P1

Solo se exportan los componentes de aplicaciones que comparten datos con otras apps, o que deberían ser invocados por otras apps.

Esto incluye actividades, servicios, receptores de emisiones y especialmente proveedores de contenido.

Define siempre el atributo android:exported de forma explícita, independientemente de si exportas o no algunos de los componentes de tu aplicación.

SC-5
SC-P2 Todos los componentes de aplicaciones que comparten contenido con otras apps definen (y garantizan) permisos apropiados. Esto incluye actividades, servicios, receptores de emisiones y especialmente proveedores de contenido. SC-4
SC-P3 Todos los proveedores de contenido que comparten contenido entre tus apps usan android:protectionLevel="signature". SC-3
Red SC-N1 Todo el tráfico de red se envía mediante SSL. SC-9
SC-N2 La aplicación declara una configuración de seguridad de red.
SC-N3 Si la aplicación utiliza los servicios de Google Play, se inicia el proveedor de seguridad junto con la aplicación.
Bibliotecas SC-U1 Todas las bibliotecas, SDK y dependencias están actualizadas.
WebViews SC-W1 JavaScript está inhabilitado en todos los WebView (salvo que se requiera). SC-6
SC-W2 WebView solo cargar contenido incluido en la lista blanca, si es posible. SC-8
SC-W3

WebViews no usan addJavaScriptInterface() con contenido que no es de confianza.

En Android M y versiones posteriores, se pueden usar canales de mensajes HTML.

SC-7
Ejecución SC-E1 La app no carga dinámicamente código desde afuera del APK de la app.
Criptografía SC-C1 La app utiliza algoritmos criptográficos eficientes, proporcionados por la plataforma y no implementa algoritmos personalizados.
SC-C2 La app utiliza un generador de números aleatorios seguro, en particular para inicializar claves criptográficas.

Google Play

Estos criterios garantizan que tus apps estén listas para su publicación en Google Play.

Área ID Descripción Pruebas
Políticas GP-P1 La app cumple estrictamente con los términos de la Política de Contenido para Desarrolladores de Google Play y no ofrece contenido inapropiado, no utiliza propiedad intelectual ni marcas de otros, etc. GP-all
GP-P2

El nivel de madurez de la app se establece de forma correcta en función de los Lineamientos de Clasificación de Contenido.

GP-1
GP-P3

La app admite funciones de administración de energía (Descanso y App Standby) en Android 6.0 y versiones posteriores. Cuando se interrumpe la funcionalidad central por la gestión de energía, solo apps calificadas pueden solicitar una exención. Consulta Compatibilidad con otros casos de uso en Descanso y App Standby.

GP-4
Página de detalles de la app GP-D1

El gráfico central de la app sigue las pautas que se describen en esta entrada del blog. Asegúrate de lo siguiente:

  1. El directorio de la app incluye un gráfico central de alta calidad.
  2. 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.
  3. El gráfico central no se parece a un anuncio publicitario.
GP-1, GP-2
GP-D2 Las capturas de pantalla y los videos de la app no muestran ni hacen referencia a dispositivos que no sean Android. GP-1
GP-D3 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 GP-X1 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. GP-1

Configuración de un entorno de prueba

Para evaluar la calidad de tu app, debes configurar un entorno de hardware o de simulación adecuado para la prueba.

El entorno de prueba ideal debería incluir poca cantidad de dispositivos de hardware que representen formatos y combinaciones de hardware y software clave actualmente disponibles para los consumidores. No es necesario realizar pruebas en todos los dispositivos disponibles en el mercado —sino que debes concentrarte en una pequeña cantidad de dispositivos representativos (incluso puedes usar uno o dos dispositivos por formato).

Si no puedes obtener dispositivos de hardware reales para realizar pruebas, debes configurar simuladores de dispositivos (AVD) a fin de representar los formatos y las combinaciones de hardware y software más comunes.

Para ir más allá de las pruebas básicas, puedes agregar más dispositivos, más formatos o nuevas combinaciones de hardware y software a tu entorno de prueba. También puedes aumentar la cantidad o la complejidad de las pruebas y los criterios de calidad.

Procedimientos de prueba

Estos procedimientos de prueba te ayudan a descubrir varios tipos de problemas de calidad en tu app. Puedes combinar las pruebas o integrar grupos en tus propios planes. Consulta las secciones anteriores para obtener referencias que asocian criterios con estos procedimientos de prueba.

Tipo Prueba Descripción
Conjunto central CR-0

Navega a todas las partes de la app —es decir, a todas las pantallas, los diálogos, las configuraciones y a todos los flujos de usuarios.

  1. Si la aplicación admite la edición o la creación de contenido, jugar a un juego o la reproducción multimedia, asegúrate de ingresar esos flujos para crear o modificar contenido.
  2. Mientras pruebas la app, introduce cambios transitorios en la conectividad de red, la función de la batería, la disponibilidad de ubicación o GPS, la carga del sistema, etc.
CR-1 Desde cada una de las pantallas de la app, presiona la tecla de Inicio del dispositivo y luego reinicia la app desde la pantalla Todas las apps.
CR-2 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.
CR-3 Desde cada una de las pantallas (y diálogos) de la app, presiona el botón Atrás.
CR-5 Desde cada una de las pantallas de la app, gira el dispositivo entre las orientaciones horizontal y vertical al menos tres veces.
CR-6 Cambia a otra app para enviar la que estás probando a segundo plano. Ingresa en Configuración y comprueba si la app que estás probando tiene servicios ejecutándose mientras se encuentra en segundo plano. En Android 4.0 y versiones posteriores, dirígete a la pantalla Apps y busca la app en la pestaña "En ejecución".
CR-7 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.
CR-8 Configura el dispositivo para que se bloquee al presionar el botón de encendido. Presiona el botón de encendido para colocar el dispositivo en modo de suspensión, luego presiona nuevamente el botón de encendido para reactivar la pantalla y desbloquea el dispositivo.
CR-9 Para los dispositivos que tienen teclados deslizantes, desliza el teclado hacia dentro y hacia fuera al menos una vez. Para los dispositivos que tienen teclados acoplados, conecta el dispositivo al teclado.
CR-10 Para los dispositivos que tienen un puerto para pantalla externa, conecta la pantalla externa.
CR-11 Inicia la app y observa en el panel lateral de notificaciones todos los tipos de notificaciones que la app puede mostrar. Cuando sea posible, expande las notificaciones (Android 4.1 y versiones posteriores) y presiona todas las acciones ofrecidas.
Instalación en tarjetas SD SD-1

Repite el Conjunto central con la app instalada en la tarjeta SD del dispositivo (si la app lo admite).

Para mover la app a la tarjeta SD puedes usar Configuración > Información de la app > Mover a la tarjeta SD.

Aceleración de hardware HA-1

Repite el Conjunto central con la aceleración de hardware habilitada.

Para forzar la habilitación de la aceleración de hardware (cuando el dispositivo lo admita), agrega hardware-accelerated="true" a <application> en el manifiesto de la app y vuelve a compilarla.

Rendimiento y estabilidad SP-1 Revisa el archivo de manifiesto de Android y la configuración de la compilación para asegurarte de que la aplicación esté compilada con la última versión del SDK (targetSdk y compileSdk).
Control del rendimiento PM-1

Repite el Conjunto central con la generación de perfiles de StrictMode habilitada como se describe a continuación.

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

Batería BA-1

Repite el Conjunto central a lo largo de los ciclos Descanso y App Standby.

Presta mucha atención a las alarmas, los temporizadores, las notificaciones y las sincronizaciones, entre otros elementos. Consulta Pruebas con Descanso y App Standby para obtener información sobre los requisitos y las pautas.

Seguridad SC-1 Revisa todos los datos guardados en el almacenamiento externo.
SC-2 Consulta cómo se manejan y procesan los datos cargados desde el almacenamiento externo.
SC-3 Revisa todos los proveedores de contenido definidos en el archivo de manifiesto de Android según el parámetro protectionLevel apropiado.
SC-4 Revisa todos los permisos que requiere tu app, en el archivo de manifiesto, en tiempo de ejecución y en la configuración de la (Configuración > Información de la app) en el dispositivo.
SC-5 Revisa todos los componentes de la aplicación definidos en el archivo de manifiesto de Android para obtener el estado de exportación apropiado. La propiedad de exportación debe establecerse explícitamente para todos los componentes.
SC-6 Revisa a configuración de seguridad de red de la app y corrobora que no se produzca ningún error en las comprobaciones de la configuración.
SC-7 Para cada WebView, navega a una página que requiera JavaScript.
SC-8 Para cada WebView, intenta navegar a sitios y contenido que estén fuera de tu control.
SC-9 Declara una configuración de seguridad de red que inhabilite el tráfico de cleartext y luego ejecuta la app.
SC-10 Ejecuta la aplicación y efectúa todas las funciones básicas, mientras estudias el registro del dispositivo. No se debe registrar ninguna información privada de los usuarios.
Google Play GP-1 Inicia sesión en Developer Console para revisar tu perfil de desarrollador, la descripción de la app, las capturas de pantalla, el gráfico central, la clasificación de contenido y los comentarios de los usuarios.
GP-2 Descarga tu gráfico central y tus capturas de pantalla, y reduce su tamaño para que coincidan con los de la pantalla de los dispositivos y formatos que estás probando.
GP-3 Revisa todos los elementos 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.
GP-4 Consulta Compatibilidad con otros casos de uso en Descanso y App Standby.
Pagos GP-4 Navega a todas las pantallas de tu app e ingresa a todos los flujos de compras directas desde la aplicación.

Prueba con StrictMode

Para la prueba de rendimiento, te recomendamos que habilites StrictMode en tu app y lo uses para detectar operaciones en el subproceso principal y en otros que podrían afectar el rendimiento, el acceso a la red, la lectura o escritura de archivos, etc.

Puedes configurar una política de control por subproceso mediante StrictMode.ThreadPolicy.Builder y habilitar todo el control admitido en ThreadPolicy con detectAll().

Asegúrate de habilitar la notificación visual de incumplimientos de políticas para ThreadPolicy mediante penaltyFlashScreen().