Las Instant Apps son una característica clave de 10, por lo que es esencial que funcionen correctamente. Las aplicaciones instantáneas se instalan implícitamente, por lo que tienen un conjunto restringido de capacidades y se ejecutan en un entorno limitado de seguridad más restrictivo. Debido a la naturaleza generalizada de estas restricciones, cualquier parte del sistema corre el riesgo de no funcionar correctamente con Instant Apps. Se crea un subconjunto de pruebas CTS para garantizar que los comportamientos permitidos por Instant Apps estén funcionando. La idea clave es minimizar el crecimiento del tamaño de CTS aislando el conjunto mínimo de pruebas al puerto. La ejecución de CTS en modo Aplicaciones instantáneas significa instalar el APK de prueba como una aplicación instantánea y ejecutar las pruebas.
Restricciones de aplicaciones instantáneas
El usuario no instala las aplicaciones instantáneas, por lo que se ejecutan en un entorno limitado con las siguientes restricciones:
- Sólo puede tener ciertos permisos.
- No puedo ver otras aplicaciones a menos que esas aplicaciones estén marcadas como visibles para Aplicaciones instantáneas.
- Solo puede acceder a ciertas configuraciones del sistema.
- Solo puede acceder a ciertas propiedades del sistema.
- No se pueden exponer servicios/proveedores.
- Puede recibir y enviar con reglas especiales sobre transmisiones.
Además, las aplicaciones instantáneas deben optar por permitir que el nuevo entorno limitado de seguridad agregue más restricciones. Esta amplia gama de comportamientos especiales en torno a las aplicaciones instantáneas abarca toda la plataforma, por lo que es necesario que haya una manera de validar que las aplicaciones instantáneas funcionen como se espera para todos los dispositivos del ecosistema.
Pruebas que se ejecutan en modo Aplicaciones instantáneas
No todos los módulos CTS tienen pruebas aplicables a las aplicaciones instantáneas. Si la funcionalidad probada por el módulo interactúa con el servidor del sistema, entonces estas pruebas deben ejecutarse en el modo Aplicaciones instantáneas. Por ejemplo, las pruebas OpenGL no interactúan con el servidor del sistema, por lo que no es necesario ejecutarlas en el modo Aplicaciones instantáneas, mientras que las pruebas de accesibilidad interactúan con el servidor del sistema, pero sí es necesario ejecutarlas en el modo Aplicaciones instantáneas.
Además de identificar qué módulos son aplicables, los usuarios deben determinar qué pruebas de estos módulos son relevantes. Por ejemplo, probar comportamientos específicos del servicio para una arquitectura conectable (por ejemplo, AccessibilityService) no es aplicable para el modo de aplicación instantánea, ya que las aplicaciones instantáneas no pueden exponer servicios a otras aplicaciones (incluida la plataforma) mientras que las pruebas que validan los comportamientos del lado de la aplicación son Aplicable al modo Aplicaciones instantáneas. Otro ejemplo es una prueba que valida que los comportamientos detrás de un permiso que una aplicación instantánea no puede mantener no son relevantes en el modo de aplicación instantánea. Hay un conjunto de pruebas que se aplican solo a las aplicaciones instantáneas y que validan las reglas sobre cómo se comportan, por ejemplo, no exponer servicios o no ver otras aplicaciones. Normalmente, estos ya están escritos y no requieren portabilidad.
Fallos de prueba en el modo Aplicaciones instantáneas
Si la prueba falla porque valida la funcionalidad a la que Instant Apps no puede acceder, entonces no es aplicable en el modo Instant Apps. Marque la prueba para que se ejecute solo en el modo de aplicación completa anotándola con @AppModeFull
. Puede aplicar esta anotación al nivel de clase para excluir todas las pruebas que contiene.
Si la prueba falla porque alguna funcionalidad accesible para Instant Apps no funciona, presente un error .
Solución de problemas
Si su prueba falla con No se pudo instalar MyCtsModule.apk en el DISPOSITIVO. Motivo: '-116' , busque mensajes de PackageManager en logcat. Por ejemplo, si dice No se puede reemplazar la aplicación completa con la aplicación instantánea: your_app , entonces adb desinstala tu aplicación primero.