Cómo configurar el CTS

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

Entorno físico

Balizas Bluetooth LE

Si el dispositivo en prueba (DUT) admite Bluetooth LE, coloca al menos tres beacons Bluetooth LE a una distancia de 5 metros del DUT para realizar pruebas de escaneo de Bluetooth LE. No es necesario configurar esos píxeles contadores ni emitir nada específico, y pueden ser de cualquier tipo, incluidos iBeacon, Eddystone o incluso dispositivos que simulan píxeles contadores BLE.

Banda ultraancha

Si el DUT admite la banda ultraancha (UWB), otro dispositivo que admita UWB debe colocarse lo suficientemente cerca y orientarse de modo que no haya una zona muerta de antenas ni radio. Para las pruebas de precisión de la distancia, existen necesidades de posicionamiento y orientación específicas. Para obtener detalles sobre la configuración, consulta 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 el particionamiento, que es necesario para esta prueba, consulta Particionamiento local.

Cámaras

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

Orienta los sensores de la cámara hacia una escena con suficiente iluminación para permitir que los sensores en prueba alcancen y se mantengan en los fotogramas por segundo (FPS) objetivo máximos configurados, según se especifica en CONTROL_AE_TARGET_FPS_RANGE. Esto se aplica a todos los sensores de cámara que informa getCameraIdList, ya que la prueba itera sobre los dispositivos enumerados y mide el rendimiento de forma individual.

Si el DUT admite cámaras externas, como cámaras web USB, conecta una cámara externa cuando ejecutes CTS. De lo contrario, las pruebas de CTS fallarán.

GPS/GNSS

Si el DUT admite la función de sistema de posicionamiento global/sistema de navegación satelital global (GPS/GNSS), proporciona un indicador GPS/GNSS al DUT a un nivel de señal adecuado para la recepción y el cálculo de la ubicación GPS. La parte del GPS debe cumplir con el 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 de CTS requieren una red Wi-Fi que admita IPv4 e IPv6, tenga una conexión a Internet con un DNS que funcione para IPv4 e IPv6, admita multicast IP y pueda tratar al DUT como un cliente aislado. Un cliente aislado es una configuración en la que la DUT no tiene visibilidad de los mensajes de transmisión o multired en esa subred. Esto ocurre con una configuración de punto de acceso (AP) de 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 operador IPv6 o una VPN para aprobar 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 debe tener asignadas direcciones IPv4 e IPv6. Comprueba las propiedades de la interfaz Wi-Fi con adb shell ifconfig.

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

RTT de Wi-Fi

Android incluye la API de Wi-Fi RTT para la función 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 el RTT de Wi-Fi son Google Wifi y el punto de acceso fitlet2 de Compulab (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 a una distancia máxima de 12 metros (40 pies) del DUT. Por lo general, un punto de acceso es suficiente.

Configuración de la máquina de escritorio

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

FFMPEG

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

Requisitos de la máquina anfitrión

El requisito mínimo para la máquina anfitrión del CTS es de 32 GiB de RAM y una capacidad de disco de 256 GiB. Esto es necesario para incluir un mayor número de casos de prueba de CTS y un aumento en la reserva de espacio de montón de Java en Tradefed.

ADB y AAPT2

Antes de ejecutar 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 de acceso 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 del 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 correcta del kit de desarrollo de Java (JDK).

  • Para Android 11, instala OpenJDK11.
  • Para 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 del JDK.

Configuración de la compatibilidad con Python

Instala virtualenv para tu plataforma siguiendo las instrucciones de instalación.

Para verificar que la instalación se haya realizado correctamente, invoca virtualenv -h.

Archivos CTS

Descarga y abre los paquetes de CTS de 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 aplicaciones (ABI) que admiten.

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

Descarga archivos CTS relacionados con Mainline (opcional)

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

Para evitar este tiempo de ejecución adicional de CTS, puedes descargar los archivos de CTS relacionados con Mainline antes de ejecutar la versión de 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 tu red.

Detección de dispositivos

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

Límite de memoria

Te recomendamos que aumentes la memoria máxima disponible durante la ejecución de prueba en la secuencia de comandos cts-tradefed. Consulta el ejemplo de CL para obtener más información.

Configuración de dispositivos Android

Compilaciones del usuario

Un dispositivo compatible se define como un dispositivo 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 del usuario que se sabe que es compatible (Android 4.0 o versiones posteriores) de Nombres de código, 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, es posible que los dispositivos que se envían originalmente con compilaciones anteriores se excluyan 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 CTS, los fabricantes de dispositivos podrían haber definido la propiedad ro.product.first_api_level del tiempo de compilación. El valor de esta propiedad es el primer nivel de API con el que se lanzó comercialmente el dispositivo.

Los fabricantes de dispositivos pueden volver a usar 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, de modo que se apliquen los requisitos de actualización para 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

Para los dispositivos que se lanzaron 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

Para los dispositivos lanzados en Android 8.x o versiones anteriores, no configures (quita) la propiedad ro.product.first_api_level para la primera compilación del producto. Para todas las compilaciones posteriores, establece ro.product.first_api_level en el valor correcto del nivel de API. Esto permite que la propiedad identifique correctamente un producto nuevo y conserve 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 versiones posteriores incluyen un formato de paquete llamado APEX. Para ejecutar pruebas de CTS para las APIs de administración de APEX (como actualizar a una versión nueva o informar APEX activos), debes preinstalar un paquete CtsShimApex en una partición /system.

La prueba de validación del shim 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 del shim 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. CTS usa estas apps para probar privilegios y permisos.

Si el dispositivo no admite la administración de paquetes APEX (es decir, falta la propiedad ro.apex.updatable o no está configurada), o bien si ejecuta la versión 10 o una anterior, las dos apps precompiladas deben preinstalarse en el sistema por separado.

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

Si se usan apps precompiladas normales, CtsShim y CtsShimPriv para la versión adecuada 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 se admite APEX)
Precargar
ARM x86 ARM x86
Android 15 android15-arm-release android15-x86-release android15-arm-CtsShim.apk

android15-arm-CtsShimPriv.apk

android15-x86-CtsShim.apk

android15-x86-CtsShimPriv.apk

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 aprobar las pruebas, precarga las apps en los directorios adecuados de la imagen del sistema sin volver a firmarlas.

Applet de muestra

Android 9 introdujo las APIs de Open Mobile. En el caso de los dispositivos que informan más de un elemento seguro, 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. Puedes encontrar la applet de muestra de eSE y la applet de muestra de SIM en AOSP.

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

Requisitos de almacenamiento

Las pruebas de esfuerzo de contenido multimedia del 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 Smoother Foundation bajo la licencia Creative Commons Atribución 3.0.

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

Estos son los requisitos de almacenamiento según la resolución máxima de reproducción de video:

  • 480 × 360: 98 MB
  • 720 x 480: 193 MB
  • 1280 × 720: 606 MB
  • 1920 × 1080: 1,863 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 ultra alta velocidad (UHS) con capacidad SDHC o SDXC, o una con al menos una clase de velocidad 10 o superior para asegurarte de que pueda pasar la 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 a las telecomunicaciones (DFTelecom) cumplen con este requisito.

UICC para desarrolladores

Para ejecutar las pruebas de la API del operador de CTS, el dispositivo debe usar una SIM con privilegios de operador de CTS que cumplan con los requisitos especificados en Preparación de la UICC.

Configuración del dispositivo Android

  1. Restablece la configuración de fábrica del dispositivo: Configuración > Copia de seguridad y restablecimiento > Restablecer configuración de fábrica.

  2. Establece el idioma del 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 sans-serif predeterminada en Roboto (la familia de fuentes sans-serif predeterminada que se usa en compilaciones de AOSP).

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

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

  6. Asegúrate de que no haya ningún patrón de bloqueo ni contraseña establecidos 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 formato de 12 horas: Configuración > Fecha y hora > Usar formato de 24 horas > Desactivado.

  9. Configura el dispositivo para que no entre en modo de suspensión: Configuración > Opciones para desarrolladores > Mantener activo > Activado.

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

  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 que permita un módem simulado: Configuración > Opciones para desarrolladores > Permitir módem simulado > Activado.

  13. Inicia el navegador y descarta cualquier 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, establece Roboto2 como la fuente Sans Serif con un indicador accesible para el usuario (no oculto).

Instalación de archivos

Instala y configura apps auxiliares en el dispositivo.

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

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

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

    • CTS versiones 6.x o anteriores: En los dispositivos que declaran android.software.device_admin, configúralos para que ejecuten la prueba de administración de dispositivos 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 precargados permanezcan inhabilitados.

  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 de archivo: chmod u+x copy_media.sh

    3. Copia los archivos necesarios:

      • Para copiar clips con una resolución de hasta 720 × 480, ejecuta lo siguiente:

        ./copy_media.sh 720x480
      • Si no estás seguro de 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