Cómo configurar el CTS

Para ejecutar el CTS, primero prepara el entorno físico, la máquina de escritorio y el dispositivo Android que usas para la prueba.

Entorno físico

Balizas Bluetooth LE

Si el dispositivo que se está probando (DUT) admite Bluetooth LE, coloca al menos tres balizas Bluetooth LE a 5 metros del DUT para la prueba de escaneo de Bluetooth LE. Esas balizas no necesitan configurarse ni emitir nada específico, y pueden ser de cualquier tipo, incluidos iBeacon, Eddystone o incluso dispositivos que simulan balizas BLE.

Banda ultraancha

Si el DUT admite banda ultraancha (UWB), otro dispositivo que admita UWB debe colocarse lo suficientemente cerca y orientado de modo que no tenga una antena ni una zona sin conexión de radio. Para las pruebas de precisión de la distancia, existen necesidades específicas de posicionamiento y orientación. Para obtener detalles de configuración, consulta los requisitos de UWB. La prueba de UWB se debe ejecutar de forma manual y especifica en la línea de comandos qué dos dispositivos están a un metro de distancia. Para obtener detalles sobre la fragmentación necesaria para esta prueba, consulta Fragmentación local.

Cámaras

Cuando ejecutes el CTS de la cámara, usa condiciones de iluminación normales con un gráfico de patrón de prueba (por ejemplo, un patrón de tabla de ajedrez). Coloca el gráfico de patrones de prueba de acuerdo con la distancia de enfoque mínima del DUT para asegurarte de que no esté demasiado cerca del lente.

Apunta los sensores de la cámara a una escena con suficiente luz para permitir que los sensores que se prueban alcancen y permanezcan en la cantidad máxima de fotogramas objetivo configurados por segundo (FPS) como se especifica en CONTROL_AE_TARGET_FPS_RANGE. Esto se aplica a todos los sensores de la cámara informados por getCameraIdList a medida que la prueba se itera en los dispositivos de la lista y mide el rendimiento de forma individual.

Si el DUT admite cámaras externas, como cámaras web USB, conecta una cuando ejecutes CTS. De lo contrario, las pruebas del CTS fallan.

GPS/GNSS

Si el DUT admite la función del sistema de posicionamiento global o del sistema satelital de navegación global (GPS/GNSS), proporciona una señal de GPS/GNSS al DUT a un nivel de señal adecuado para la recepción y el cálculo de la ubicación del GPS. La parte del GPS debe cumplir con el estándar ICD-GPS-200C. De lo contrario, la señal de GPS/GNSS puede ser de cualquier tipo, incluido un simulador satelital o un repetidor de GPS/GNSS de señales exteriores, o puedes colocar el DUT lo suficientemente cerca de una ventana para que pueda recibir directamente suficiente señal de GPS/GNSS.

Wi-Fi e IPv6

Las pruebas del CTS requieren una red Wi-Fi que admita IPv4 e IPv6, una conexión a Internet con DNS que funcione para IPv4 e IPv6, compatible con multidifusión IP y pueda tratar el DUT como un cliente aislado. Un cliente aislado es una configuración en la que el DUT no tiene visibilidad de los mensajes de emisión o redes múltiples en esa subred. Esto ocurre con la configuración de un punto de acceso (AP) Wi-Fi o cuando se ejecuta el DUT en una subred aislada sin que se conecten otros dispositivos.

Si no tienes acceso a una red IPv6 nativa, una red de operadores IPv6 o una VPN para pasar algunas pruebas según IPv6, puedes usar un punto de acceso Wi-Fi y un túnel IPv6.

Para pasar el CTS, el DUT necesita las marcas UP, BROADCAST y MULTICAST configuradas en la interfaz de Wi-Fi. La interfaz Wi-Fi requiere que se asignen direcciones IPv4 e IPv6. Verifica las propiedades de la interfaz Wi-Fi con adb shell ifconfig.

En el caso de los dispositivos que admiten la simultaneidad de STA/STA de Wi-Fi, se requieren varias redes Wi-Fi (al menos 2). Para pasar el CTS, las redes Wi-Fi deben ejecutarse en bandas diferentes con SSID diferentes o en el mismo SSID con BSSID distintos.

Wi-Fi RTT

Android incluye la API de Wi-Fi RTT para la capacidad de tiempo de ida y vuelta (RTT) de Wi-Fi. Esto permite que los dispositivos midan la distancia a los puntos de acceso con una precisión de 1 a 2 metros, lo que aumenta significativamente la precisión de la ubicación en interiores. Dos dispositivos recomendados que admiten Wi-Fi RTT son Google Wifi y el punto de acceso Fitlet2 de Comppulab (configurado en un ancho de banda de 40 MHz a 5 GHz).

Los puntos de acceso deben estar encendidos, pero no requieren una conexión de red. No es necesario que los puntos de acceso estén junto al dispositivo de prueba, pero se recomienda que estén dentro de un radio de 12 m del DUT. Por lo general, un punto de acceso es suficiente.

Configuración de una máquina de escritorio

Precaución: El CTS admite máquinas de Linux de 64 bits. El CTS no es compatible con el SO Windows o MacOS.

FFmpeg

Instala el paquete de ffmpeg versión 5.1.3 (o posterior) en la máquina anfitrión.

Actualización de la máquina anfitrión

Se recomienda actualizar la RAM de la máquina anfitrión del CTS a 128 GB y el HDD a 256 GB. Es necesario para admitir el mayor número de casos de prueba de CTS y un aumento en la reserva de espacio del montón de Java en el intercambio.

ADB y AAPT2

Antes de ejecutar el CTS, asegúrate de haber instalado las versiones recientes de Android Debug Bridge (adb) y Android Asset Packaging Tool (AAPT2), y de haber agregado la ubicación de esas herramientas a la ruta del sistema de tu máquina.

Para instalar ADB y AAPT2, descarga las Herramientas de la plataforma del SDK de Android y las Herramientas de compilación del SDK de Android más recientes desde SDK Manager de Android Studio o desde la herramienta de línea de comandos sdkmanager.

Asegúrate de que adb y aapt2 estén en la ruta de acceso de tu sistema. El siguiente comando supone que descargaste los archivos de paquetes en un subdirectorio llamado android-sdk en el directorio principal:

export PATH=$PATH:$HOME/android-sdk/platform-tools:$HOME/android-sdk/build-tools/<tools version number>

Java Development Kit para Ubuntu

Instala la versión adecuada de Java Development Kit (JDK).

  • En Android 11, instala OpenJDK11.
  • En el caso de Android 9 y Android 10, instala OpenJDK9.
  • Para Android 7.0, 7.1, 8.0 y 8.1, instala OpenJDK8.

Para obtener más información, consulta los requisitos de JDK.

Configuración de la compatibilidad con Python

Instala virtualenv en tu plataforma según las instrucciones de Instalación.

Puedes verificar que la instalación se realizó de forma correcta si invocas virtualenv -h.

Archivos CTS

Descarga y abre los paquetes de CTS desde las Descargas del Conjunto de pruebas de compatibilidad que coincidan con la versión de Android de tus dispositivos y todas las interfaces binarias de la aplicación (ABI) que admiten estos dispositivos.

Descarga y abre la versión más reciente de los archivos multimedia de CTS.

Descarga archivos CTS relacionados con la línea principal (opcional)

Cuando ejecutas una versión del CTS por primera vez, el CTS descarga de forma dinámica algunos archivos del CTS relacionados con la línea principal, lo que agrega al menos 10 minutos al tiempo de ejecución, según la velocidad de la red.

Para evitar este tiempo de ejecución del CTS agregado, puedes descargar los archivos del CTS relacionados con la línea principal antes de ejecutar la versión del CTS. Para ello, sigue estas instrucciones:

  1. Para obtener el nivel de API de Android en el dispositivo, ejecuta lo siguiente:

    adb shell getprop ro.build.version.sdk
    
  2. Sigue las instrucciones de la secuencia de comandos download_mcts.sh para descargar los archivos principales del CTS.

    La descarga tarda al menos 10 minutos, según la velocidad de la red.

Detección de dispositivos

Sigue el paso para configurar el sistema de modo que detecte el dispositivo.

Límite de memoria

Es posible que desees aumentar la memoria máxima disponible durante la ejecución de prueba en la secuencia de comandos cts-tradefed. Consulta la CL de ejemplo para obtener más información.

Configuración de dispositivos Android

Compilaciones de usuarios

Un dispositivo compatible se define como aquel con una compilación firmada por el usuario o la clave de lanzamiento. Tu dispositivo debe ejecutar una imagen del sistema basada en la compilación de usuario compatible conocida (Android 4.0 o versiones posteriores) de Nombres internos, etiquetas y números de compilación.

Primera propiedad de compilación de nivel de API

Algunos requisitos del CTS dependen de la compilación con la que se envió originalmente un dispositivo. Por ejemplo, los dispositivos que originalmente se envían con compilaciones anteriores pueden excluirse de los requisitos del sistema que se aplican a los dispositivos que se envían con compilaciones posteriores.

Para que esta información esté disponible para el CTS, los fabricantes de dispositivos podrían haber definido la propiedad de tiempo de compilación ro.product.first_api_level. El valor de esta propiedad es el primer nivel de API con el que el dispositivo se lanzó comercialmente.

Los fabricantes de dispositivos pueden reutilizar la implementación subyacente común para lanzar un producto nuevo como una actualización de un producto existente en el mismo grupo de dispositivos. De manera opcional, los fabricantes de dispositivos pueden establecer el nivel de API del producto existente en ro.product.first_api_level para que se apliquen los requisitos de actualización de CTS y Treble/VTS.

Los fabricantes de dispositivos pueden definir PRODUCT_SHIPPING_API_LEVEL en su archivo device.mk para establecer esta propiedad, como se muestra en el siguiente ejemplo:

# PRODUCT_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
# the first api level that the device has been commercially launched on.
PRODUCT_SHIPPING_API_LEVEL := 21

Primer nivel de API para Android 9 o versiones posteriores

En el caso de los dispositivos que se lanzan con Android 9 o versiones posteriores, establece la propiedad ro.product.first_api_level en un valor válido de Nombres internos, etiquetas y números de compilación.

Primer nivel de API para Android 8.x o versiones anteriores

En el caso de los dispositivos que se lanzaron con Android 8.x o versiones anteriores, anula (quita) la propiedad ro.product.first_api_level para la primera compilación del producto. Para todas las compilaciones posteriores, configura ro.product.first_api_level en el valor de nivel de API correcto. Esto permite que la propiedad identifique de forma correcta un producto nuevo y conserva la información sobre el primer nivel de API del producto. Si no se establece la marca, Android asigna Build.VERSION.SDK_INT a ro.product.first_api_level.

Paquetes de corrección de compatibilidad de CTS

Android 10 o las versiones posteriores incluyen un formato de paquete llamado APEX. A fin de ejecutar pruebas de CTS para las APIs de administración de APEX (como actualizar a una versión nueva o informar sobre APEX activos), debes preinstalar un paquete CtsShimApex en una partición /system.

La prueba de validación de la corrección de compatibilidad de APEX verifica la implementación de CtsShimApex.

Requisitos de ro.apex.updatable

  • Si la propiedad ro.apex.updatable se configura como true, se requiere CtsShimApex para todos los dispositivos que admiten la administración de paquetes de APEX.

  • Si falta la propiedad ro.apex.updatable o no está configurada, no es necesario que CtsShimApex esté preinstalada en un dispositivo.

La prueba de validación de la corrección de compatibilidad de APEX verifica la implementación de CtsShimApex.

Preinstalaciones y precargas de CtsShim

A partir de Android 11, CtsShimApex incluye dos apps compiladas previamente (compiladas a partir de la fuente de compilación), que no incluyen ningún código, excepto el manifiesto. El CTS usa estas apps para probar privilegios y permisos.

Si el dispositivo no admite la administración de paquetes de APEX (es decir, falta o no se establece la propiedad ro.apex.updatable), o bien si ejecuta la versión 10 o una anterior, las dos apps ya compiladas deben estar preinstaladas en el sistema por separado.

Si se admite APEX, las preinstalaciones de la versión correspondiente deben colocarse como /system/apex/com.android.apex.cts.shim.apex.

Si se usan apps precompiladas normales, CtsShim y CtsShimPriv para la versión correspondiente deben colocarse como /system/app/CtsShimPrebuilt.apk y /system/priv-app/CtsShimPrivPrebuilt.apk, respectivamente.

En la siguiente tabla, se enumeran las preinstalaciones y precargas disponibles para cada versión y arquitectura del dispositivo.

Versión de dispositivo Preinstala
(si es compatible con APEX)
Precargar
ARM x86 ARM x86
Android 14 android14-arm-release android14-x86-release android14-arm-CtsShim.apk

android14-arm-CtsShimPriv.apk

android14-x86-CtsShim.apk

android14-x86-CtsShimPriv.apk

Android 13 android13-arm-release android13-x86-release android13-arm-CtsShim.apk

android13-arm-CtsShimPriv.apk

android13-x86-CtsShim.apk

android13-x86-CtsShimPriv.apk

Android 12 android12-arm-release android12-x86-release android12-arm-CtsShim.apk

android12-arm-CtsShimPriv.apk

android12-x86-CtsShim.apk

android12-x86-CtsShimPriv.apk

Android 11 android11-arm-release android11-x86-release android11-arm-CtsShim.apk

android11-arm-CtsShimPriv.apk

android11-x86-CtsShim.apk

android11-x86-CtsShimPriv.apk

Android 10 versión android10 android10-arm-CtsShim.apk

android10-arm-CtsShimPriv.apk

android10-x86-CtsShim.apk

android10-x86-CtsShimPriv.apk

Android 9, O y O-MR1 N/A N/A arm-CtsShim.apk

arm-CtsShimPriv.apk

x86-CtsShim.apk

x86-CtsShimPriv.apk

Para pasar las pruebas, carga previamente las apps en los directorios correspondientes de la imagen del sistema sin volver a firmar las apps.

Applet de muestra

Android 9 presentó las APIs de Open Mobile. En el caso de los dispositivos que informan más de un elemento seguro, el CTS agrega casos de prueba para validar el comportamiento de las APIs de Open Mobile. Estos casos de prueba requieren la instalación única de una applet de muestra en el Elemento seguro incorporado (eSE) del DUT o en la tarjeta SIM que usa el DUT. La applet de muestra de eSE y la applet de muestra de SIM se pueden encontrar en el AOSP.

Consulta Prueba de CTS para Elemento seguro si quieres obtener información más detallada sobre los casos de prueba de la API de Open Mobile y los casos de prueba de control de acceso.

Requisitos de almacenamiento

Las pruebas de esfuerzo de contenido multimedia de CTS requieren que los clips de video estén en un almacenamiento externo (/sdcard). La mayoría de los clips son de Big Buck Bunny, protegido por derechos de autor de la Mergeer Foundation bajo la licencia Creative Commons Atribución 3.0.

El espacio requerido depende de la resolución de reproducción de video máxima que admita el dispositivo. Consulta la sección 5 del documento de Definición de compatibilidad de Android para conocer la versión de plataforma de las resoluciones requeridas.

Estos son los requisitos de almacenamiento por resolución máxima de reproducción de video:

  • 480 x 360: 98 MB
  • 720 x 480: 193 MB
  • 1280 x 720: 606 MB
  • 1920 x 1080: 1863 MB

Pantalla y almacenamiento

  • Todos los dispositivos que no tengan una pantalla incorporada deben conectarse a una pantalla.
  • Si el dispositivo tiene una ranura para tarjeta de memoria, conecta una tarjeta SD vacía. Usa una tarjeta SD que admita un bus de velocidad ultraalta (UHS) con capacidad SDHC o SDXC, o una con una clase de velocidad de al menos 10 o superior para asegurarte de que pueda pasar el CTS.

  • Si el dispositivo tiene ranuras para tarjetas SIM, conecta una tarjeta SIM activada en cada ranura. Si el dispositivo admite SMS, cada tarjeta SIM debe tener su propio campo de número propagado. En el caso de los dispositivos que ejecutan Android 12 o versiones posteriores, todas las tarjetas SIM deben ser compatibles con el almacenamiento de números de marcación abreviados (ADN). Las tarjetas GSM y USIM con el archivo dedicado para telecomunicaciones (DFTelecom) cumplen con este requisito.

UICC para desarrolladores

Para ejecutar pruebas de la API del proveedor del CTS, el dispositivo debe usar una SIM con privilegios de proveedor del CTS que cumplan con los requisitos especificados en Cómo preparar la UICC.

Configuración de dispositivos Android

  1. Si restableces la configuración de fábrica del dispositivo, ve a Configuración > Crear copia de seguridad y restablecer > Restablecer la configuración de fábrica.

  2. Configura el idioma de tu dispositivo en inglés (Estados Unidos): Configuración > Idioma y entrada > Idioma.

  3. Si el dispositivo admite la personalización de fuentes predeterminadas, establece la familia de fuentes predeterminada sans-serif en Roboto (la familia de fuentes predeterminada sans-serif que se usa en las compilaciones de AOSP).

  4. Activa la configuración de la ubicación si el dispositivo cuenta con una función de GPS o Wi-Fi o red móvil: Configuración > Ubicación > Activada.

  5. Conéctate a una red Wi-Fi que admita IPv6, pueda tratar el DUT como un cliente aislado (consulta Entorno físico más arriba) y tenga conexión a Internet: Configuración > Wi-Fi.

  6. Asegúrate de que no haya un patrón de bloqueo o contraseña configurados en el dispositivo: Configuración > Seguridad > Bloqueo de pantalla > Ninguno.

  7. Habilita la depuración por USB en tu dispositivo: Configuración > Opciones para desarrolladores > Depuración por USB.

  8. Establece la hora en el formato de 12 horas: Configuración > Fecha y hora > Usar formato de 24 horas > Desactivar.

  9. Configura el dispositivo para que permanezca activo: Configuración > Opciones para desarrolladores > Permanecer activo > Activado.

  10. En solo Android 5.x y 4.4.x, configura el dispositivo para permitir ubicaciones simuladas: Configuración > Opciones para desarrolladores > Permitir ubicaciones simuladas > Activar.

  11. En Android 4.2 o versiones posteriores, desactiva la verificación de apps por USB: Configuración > Opciones para desarrolladores > Verificar apps por USB > Desactivar.

  12. En Android 13 o versiones posteriores, configura el dispositivo para permitir el módem simulado: Settings > Developer options > Allow Mock Modem > On.

  13. Inicia el navegador y descarta la pantalla de inicio o configuración.

  14. Conecta la máquina de escritorio que se usará para probar el dispositivo con un cable USB.

  15. Antes de ejecutar CTS, configura Roboto2 como la fuente Sans Serif con un parámetro de configuración de prestación accesible para el usuario (no oculto).

Instalación de archivos

Instala y configura apps de ayuda en el dispositivo.

  1. Configura tu dispositivo según la versión de CTS:

    • Versiones de CTS 2.1 R2 a 4.2 R4: Configura tu dispositivo (o emulador) para ejecutar las pruebas de accesibilidad con: adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk

      En el dispositivo, habilita la delegación: Configuración > Accesibilidad > Accesibilidad > Delegación del servicio de accesibilidad.

    • Versiones de CTS 6.x o anteriores: En los dispositivos que declaran android.software.device_admin, configura el dispositivo para ejecutar la prueba de administración del dispositivo con lo siguiente: adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk`

      En Configuración > Seguridad > Seleccionar administradores del dispositivo, habilita los dos administradores del dispositivo android.deviceadmin.cts.CtsDeviceAdminReceiver*. Asegúrate de que android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver y cualquier otro administrador de dispositivos precargado permanezca inhabilitado.

  2. Copia los archivos multimedia de CTS en el dispositivo de la siguiente manera:

    1. Navega (cd) a la ruta de acceso en la que se descargan y descomprimen los archivos multimedia.
    2. Cambia los permisos del archivo: chmod u+x copy_media.sh

    3. Copia los archivos necesarios:

      • Para copiar clips de hasta 720 × 480, ejecuta lo siguiente:

        ./copy_media.sh 720x480
        
      • Si no sabes cuál es la resolución máxima, copia todos los archivos:

        ./copy_media.sh all
        
      • Si hay varios dispositivos en adb, agrega la opción de serie (-s) de un dispositivo específico al final. Por ejemplo, para copiar hasta 720 x 480 en el dispositivo con el número de serie 1234567, ejecuta lo siguiente:

        ./copy_media.sh 720x480 -s 1234567