CTS для мгновенных приложений

Мгновенные приложения — ключевая функция 10, поэтому очень важно, чтобы они работали правильно. Мгновенные приложения устанавливаются неявно, поэтому они имеют ограниченный набор возможностей и работают в изолированной программной среде с более строгими ограничениями. Из-за всеобъемлющего характера этих ограничений любая часть системы может неправильно работать с мгновенными приложениями. Подмножество тестов CTS создается, чтобы убедиться, что поведение, разрешенное мгновенными приложениями, работает. Основная идея состоит в том, чтобы свести к минимуму рост размера CTS, изолируя минимальный набор тестов для переноса. CTS, работающий в режиме Instant Apps, означает установку тестового APK как Instant App и запуск тестов.

Ограничения мгновенного приложения

Приложения с мгновенным запуском не устанавливаются пользователем, поэтому они работают в изолированной программной среде с ограниченным доступом со следующими ограничениями:

  • Может иметь только определенные разрешения.
  • Не могу видеть другие приложения, если эти приложения не помечены как видимые для приложений с мгновенным запуском.
  • Может получить доступ только к определенным настройкам системы.
  • Может получить доступ только к определенным системным свойствам.
  • Не могу открыть сервисы/поставщиков.
  • Может получать и отправлять с помощью специальных правил для широковещательных передач.

Кроме того, приложениям с мгновенным запуском необходимо разрешить новой изолированной программной среде безопасности добавлять дополнительные ограничения. Этот широкий спектр особых поведений, связанных с приложениями с мгновенным запуском, охватывает всю платформу, поэтому должен быть способ проверить, что приложения с мгновенным запуском работают должным образом на всех устройствах в экосистеме.

Тесты, работающие в режиме Instant Apps

Не все модули CTS имеют тесты, применимые к мгновенным приложениям. Если проверяемый модулем функционал взаимодействует с сервером системы, то эти тесты следует запускать в режиме Instant App. Например, тесты OpenGL не взаимодействуют с системным сервером, поэтому нет необходимости запускать их в режиме мгновенного приложения, в то время как тесты специальных возможностей взаимодействуют с системным сервером, но необходимо запускать их в режиме мгновенного приложения.

Помимо определения того, какие модули применимы, пользователям необходимо определить, какие тесты в этих модулях актуальны. Например, тестирование поведения конкретных служб для подключаемой архитектуры (например, AccessibilityService) неприменимо для режима мгновенных приложений, поскольку мгновенные приложения не могут предоставлять службы другим приложениям (включая платформу), в то время как тесты, проверяющие поведение на стороне приложения, применимо для режима мгновенных приложений. Другим примером является тест, который проверяет поведение, связанное с разрешением, которое приложение с мгновенным запуском не может удерживать, не относящимся к режиму приложения с мгновенным запуском. Существует набор тестов, которые применяются только к приложениям с мгновенным запуском и проверяют правила их поведения, например, отсутствие предоставления услуг или отсутствие просмотра других приложений. Как правило, они уже написаны и не требуют переноса.

Сбои теста в мгновенном режиме

Если тест не пройден из-за проверки функциональности, к которой не могут получить доступ мгновенные приложения, то он неприменим в режиме мгновенных приложений. Отметьте тест для запуска только в режиме полного приложения, добавив к нему аннотацию @AppModeFull . Вы можете применить эту аннотацию к уровню класса, чтобы исключить из него все тесты.

Если тест не пройден из-за того, что некоторые функции, доступные для приложений с мгновенным запуском, не работают, отправьте сообщение об ошибке .

Поиск проблемы

Если ваш тест не прошел с ошибкой , чтобы установить MyCtsModule.apk на УСТРОЙСТВО. Причина: '-116' , ищите сообщения PackageManager в logcat. Например, если он говорит, что нельзя заменить полное приложение мгновенным приложением: your_app , тогда adb сначала удалит ваше приложение.