En Android 11 o versiones posteriores, los módulos de ayuda de interacción con el dispositivo del conjunto de pruebas de compatibilidad (CTS) te permiten personalizar la forma en que ciertas pruebas de CTS interactúan con la interfaz de usuario (IU) en un dispositivo específico. Esto significa que las acciones, como reemplazar un elemento de la IU que no está cubierto por el documento de definición de compatibilidad de Android (CDD) o los documentos de la API, se pueden realizar y, al mismo tiempo, aprobar el CTS.
Los OEMs que quieran personalizar la IU de Android durante el desarrollo del producto y necesiten aprobar CTS podrían implementar módulos de ayuda. Si usas la implementación predeterminada de Android, no es necesario que realices ninguna acción adicional.
Implementa módulos auxiliares
Requisitos para personalizar la IU
Verifica los módulos de CDD o Mainline para conocer los requisitos de la IU. Si la IU deseada está cubierta por los módulos de CDD o de la línea principal, esa IU no se podrá personalizar.
Si las pruebas del CTS que interactúan con la IU deseada no usan el framework auxiliar, esa IU no se puede personalizar. Trabaja con el propietario de la prueba para convertir el módulo de prueba antes de que se pueda cambiar la IU.
De lo contrario, puedes personalizar la IU.
Flujo de trabajo de implementación
- Personaliza la IU según sea necesario para tu producto específico.
- Designa los módulos de ayuda de AOSP existentes como subclases para los módulos de prueba de CTS que deben interactuar con la IU. Reemplaza las interacciones necesarias de manera adecuada para la IU personalizada. Los reemplazos varían según el tipo de cambios.
- Las subclases de OEM están en un paquete de OEM, como
com.[oem].cts.helpers
. - Cada subclase de OEM se nombra con un prefijo común que la distingue
de la implementación de AOSP, que tiene el prefijo
Default
.
- Las subclases de OEM están en un paquete de OEM, como
- Compila los asistentes en un APK siguiendo estas convenciones del ejecutor de pruebas.
Android.bp
debe declararandroid_test_helper_app
con el mismo nombre que el paquete contenido.AndroidManifest.xml
para el APK debe declarar una propiedad de metadatos llamadainteraction-helpers-prefix
con el valor del prefijo de clase elegido en el punto anterior.- La app debe depender de
cts-helpers-core
,cts-helpers-interfaces
ycom.android.cts.helpers.aosp
. Si los ayudantes del OEM implementan por completo todas las interfaces relevantes,com.android.cts.helpers.aosp
es opcional.
- Establece la propiedad
ro.vendor.cts_interaction_helper_packages
en la imagen del dispositivo para incluir el nombre del APK. Si necesitas separar las implementaciones auxiliares en varios APK, esta propiedad puede contener una lista de paquetes separados por dos puntos. - Asegúrate de que el APK esté disponible en el directorio
testcases
cuando ejecutes Tradefed para CTS. Si es necesario, confirma que se haya elegido la clase de implementación auxiliar esperada mediante el análisis de los mensajes de logcat. - Opcional, pero altamente recomendable: Envía tu implementación de asistente al AOSP o haz que esté disponible para pruebas de terceros.
Ejemplo de implementación de ayuda
Por ejemplo, CtsPrintTestCases
espera un ayudante con la interfaz definida en ICtsPrintHelper
. La implementación del AOSP se llama com.android.cts.helpers.aosp.DefaultCtsPrintHelper
.
Si personalizas la IU de impresión, puedes crear una com.oem.cts.helpers.OemCtsPrintHelper
que sea una subclase de DefaultCtsPrintHelper
.
android_test_helper_app
en Android.bp
se llama com.oem.cts.helpers
, que produce com.oem.cts.helpers.apk
y declara interaction-helpers-prefix
como Oem
en AndroidManifest.xml
.
La propiedad del dispositivo ro.vendor.cts_interaction_helper_packages
se establece en com.oem.cts.helpers
.
Implementaciones de referencia
Las implementaciones de referencia incluyen interfaces en cts/libs/helpers
y los ayudas de AOSP predeterminadas en cts/helpers
. La interfaz de nivel superior se documenta en cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java
.
Para conectar la prueba del CTS con sus asistentes, los propietarios de estas pueden usar la definición de @Rule
documentada en cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java
.
Cada módulo de CTS que usa el framework y su comportamiento de ayuda esperado se documenta en una interfaz definida en cts/libs/helpers/core/src/com/android/cts/helpers
.
Cómo ejecutar pruebas de CTS
Cómo realizar pruebas sin ayudantes
Aparte de una propiedad, la opción de probar sin ayudantes no existe en el tiempo de ejecución en el dispositivo, pero, de manera opcional, modifica la forma en que las pruebas de CTS interactúan con el dispositivo. Si necesitas ejecutar CTS sin las implementaciones de ayuda, tienes dos opciones:
- Quita la propiedad
ro.vendor.cts_interaction_helper_packages
del dispositivo. De esta manera, se evita que los asistentes se usen por completo en esa compilación. - Quita el APK de ayuda del directorio
testcases
antes de ejecutar CTS. Esto evita que las ejecuciones usen los ayudantes hasta que el APK se restaure atestcases
.
Puedes modificar la configuración predeterminada con los argumentos de Tradefed y el control de propiedades ro.vendor.cts_interaction_helper_packages
, que es desde donde se carga el APK auxiliar.
Consulta la siguiente información para conocer los valores o rangos esperados para cada uno de los parámetros de configuración disponibles.
ro.vendor.cts_interaction_helper_packages
es una cadena separada por dos puntos que contiene nombres de paquetes. Puede aceptar cualquier valor que sea una opción de paquete válida para la implementación del asistente del OEM.cts-tradefed
acepta un argumentodevice-interaction-helper:property-name
que cambia temporalmente la propiedad esperada para una ejecución de prueba, como--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'
. El valor del nombre de la propiedad puede ser cualquier propiedad que establezcas en el dispositivo. El valor de la propiedad sigue las mismas restricciones que la propiedadro.vendor.cts_interaction_helper_packages
descrita anteriormente.
Cómo realizar pruebas con personalizaciones
De forma predeterminada, las implementaciones de referencia pasan CTS en el Android de stock. Verifica que las implementaciones de los socios pasen la CTS con personalizaciones de la IU. Ejecuta los módulos de CTS que cubren la IU o las funciones que personalizaste.
Es posible que algunos módulos o asistentes de CTS aún no admitan algunas personalizaciones.
- Es posible que un módulo de CTS que interactúe con la IU que deseas personalizar no use el framework auxiliar. Se espera que los módulos de CTS se conviertan en el framework de ayuda según la demanda y las prioridades del propietario de la prueba. Envía solicitudes de conversión al principio del proceso para asegurarte de que se incluyan en el cronograma, de manera similar a solicitar cambios en CTS para admitir las funciones planificadas.
- Es posible que las funciones que proporciona un asistente existente no aborden por completo las personalizacións que deseas realizar. Las funciones de ayuda deben abstraer las dependencias de la IU. Si una función auxiliar tiene una dependencia de IU de forma indirecta, esto se puede tratar de manera similar a los errores de CTS.