Мгновенные приложения — ключевая функция 10, поэтому очень важно, чтобы они работали правильно. Приложения с мгновенным запуском устанавливаются неявно, поэтому они имеют ограниченный набор возможностей и работают в изолированной программной среде с более строгими ограничениями. Из-за повсеместного характера этих ограничений любая часть системы может не работать должным образом с мгновенными приложениями. Подмножество тестов CTS создается для проверки работоспособности поведения, разрешенного приложениями с мгновенным запуском. Основная идея состоит в том, чтобы свести к минимуму рост размера CTS за счет выделения минимального набора тестов для переноса. Работа CTS в режиме Instant Apps означает установку тестового APK в качестве Instant App и запуск тестов.
Ограничения приложения с мгновенным запуском
Приложения с мгновенным запуском не устанавливаются пользователем, поэтому они запускаются в изолированной программной среде со следующими ограничениями:
- Может иметь только определенные разрешения.
- Невозможно видеть другие приложения, если они не помечены как видимые для приложений с мгновенным запуском.
- Доступен только к определенным настройкам системы.
- Имеет доступ только к определенным свойствам системы.
- Невозможно раскрыть услуги/поставщиков.
- Можно получать и отправлять с соблюдением особых правил для трансляций.
Кроме того, приложениям с мгновенным запуском необходимо разрешить новой изолированной программной среде безопасности добавлять дополнительные ограничения. Этот широкий спектр особого поведения в отношении приложений с мгновенным запуском охватывает всю платформу, поэтому должен быть способ проверить, что приложения с мгновенным запуском работают должным образом на всех устройствах в экосистеме.
Тесты, выполняемые в режиме Instant Apps
Не все модули CTS имеют тесты, применимые к мгновенным приложениям. Если функциональность, тестируемая модулем, имеет взаимодействие с сервером системы, то эти тесты следует запускать в режиме Instant Apps. Например, тесты OpenGL не взаимодействуют с системным сервером, поэтому нет необходимости запускать их в режиме Instant Apps, в то время как тесты доступности взаимодействуют с системным сервером, но необходимо запускать их в режиме Instant Apps.
Помимо определения того, какие модули применимы, пользователям необходимо определить, какие тесты в этих модулях являются релевантными. Например, тестирование поведения конкретных служб для подключаемой архитектуры (например, AccessibilityService) неприменимо для режима мгновенного приложения, поскольку мгновенные приложения не могут предоставлять службы другим приложениям (включая платформу), в то время как тесты, проверяющие поведение на стороне приложения, не применимы. применимо для режима Instant Apps. Другим примером является тест, проверяющий, что поведение, лежащее в основе разрешения, которое не может удерживать мгновенное приложение, не актуально в режиме мгновенного приложения. Существует набор тестов, которые применимы только к приложениям с мгновенным запуском и проверяют правила их поведения, например, не раскрывать службы или не видеть другие приложения. Обычно они уже написаны и не требуют портирования.
Сбои тестирования в режиме Instant Apps
Если тест не пройден, поскольку он проверяет функциональность, к которой приложения с мгновенным запуском не имеют доступа, то он неприменим в режиме приложений с мгновенным запуском. Отметьте тест для запуска только в режиме полного приложения, отметив его @AppModeFull
. Вы можете применить эту аннотацию к уровню класса, чтобы исключить все тесты в нем.
Если тест не пройден из-за того, что некоторые функции, доступные приложениям с мгновенным запуском, не работают, сообщите об ошибке .
Поиск неисправностей
Если ваш тест не пройден с ошибкой «Не удалось установить MyCtsModule.apk на УСТРОЙСТВО». Причина: «-116» , найдите сообщения PackageManager в logcat. Например, если написано «Невозможно заменить полное приложение мгновенным приложением: your_app» , сначала adb удалите ваше приложение.