Aplikacje błyskawiczne to kluczowa funkcja 10, dlatego ważne jest, aby działały prawidłowo. Aplikacje błyskawiczne są instalowane niejawnie, dlatego mają ograniczony zestaw możliwości i działają w bardziej restrykcyjnej piaskownicy bezpieczeństwa. Ze względu na powszechny charakter tych ograniczeń jakakolwiek część systemu jest narażona na ryzyko nieprawidłowej współpracy z aplikacjami błyskawicznymi. Tworzony jest podzbiór testów CTS, aby upewnić się, że działają zachowania dozwolone przez aplikacje błyskawiczne. Kluczową ideą jest zminimalizowanie wzrostu rozmiaru CTS poprzez izolowanie minimalnego zestawu testów do przeniesienia. CTS działający w trybie aplikacji błyskawicznych oznacza zainstalowanie testowego pakietu APK jako aplikacji błyskawicznej i uruchomienie testów.
Ograniczenia aplikacji błyskawicznej
Aplikacje błyskawiczne nie są instalowane przez użytkownika, dlatego działają w piaskownicy z ograniczeniami, z następującymi ograniczeniami:
- Może posiadać tylko określone uprawnienia.
- Nie widać innych aplikacji, chyba że są one oznaczone jako widoczne dla aplikacji błyskawicznych.
- Ma dostęp tylko do niektórych ustawień systemowych.
- Ma dostęp tylko do niektórych właściwości systemu.
- Nie można ujawnić usług/dostawców.
- Można odbierać i wysyłać ze specjalnymi zasadami dotyczącymi transmisji.
Ponadto aplikacje błyskawiczne muszą wyrazić zgodę na dodanie większej liczby ograniczeń przez nową piaskownicę zabezpieczeń. Ta szeroka gama specjalnych zachowań związanych z aplikacjami błyskawicznymi obejmuje całą platformę, dlatego musi istnieć sposób sprawdzenia, czy aplikacje błyskawiczne działają zgodnie z oczekiwaniami na wszystkich urządzeniach w ekosystemie.
Testy uruchomione w trybie aplikacji błyskawicznych
Nie wszystkie moduły CTS posiadają testy mające zastosowanie do aplikacji błyskawicznych. Jeżeli testowana przez moduł funkcjonalność ma interakcję z serwerem systemu, to testy te należy uruchomić w trybie Instant Apps. Na przykład testy OpenGL nie wchodzą w interakcję z serwerem systemowym, więc nie ma potrzeby uruchamiania ich w trybie aplikacji błyskawicznych, podczas gdy testy dostępności wchodzą w interakcję z serwerem systemowym, ale należy je uruchamiać w trybie aplikacji błyskawicznych.
Oprócz określenia, które moduły mają zastosowanie, użytkownicy muszą określić, które testy w tych modułach są istotne. Na przykład testowanie zachowań specyficznych dla usług w przypadku architektury podłączanej (na przykład AccessibilityService) nie ma zastosowania w trybie aplikacji błyskawicznej, ponieważ aplikacje błyskawiczne nie mogą udostępniać usług innym aplikacjom (w tym platformie), podczas gdy testy sprawdzające zachowania po stronie aplikacji są dotyczy trybu aplikacji błyskawicznych. Innym przykładem jest test sprawdzający, czy zachowania wynikające z uprawnień, których aplikacja błyskawiczna nie może posiadać, nie są istotne w trybie aplikacji błyskawicznej. Istnieje zestaw testów mających zastosowanie tylko do aplikacji błyskawicznych, które sprawdzają reguły dotyczące ich zachowania, na przykład nieujawniania usług lub niewyświetlania innych aplikacji. Zazwyczaj są one już napisane i nie wymagają przenoszenia.
Błędy testowania w trybie aplikacji błyskawicznych
Jeśli test zakończy się niepowodzeniem, ponieważ sprawdza funkcjonalność, do której aplikacje błyskawiczne nie mają dostępu, nie można go zastosować w trybie aplikacji błyskawicznych. Oznacz test do uruchomienia tylko w trybie pełnej aplikacji, dodając do niego adnotację @AppModeFull
. Możesz zastosować tę adnotację do poziomu klasy, aby wykluczyć wszystkie zawarte w niej testy.
Jeśli test zakończy się niepowodzeniem, ponieważ niektóre funkcje dostępne w aplikacjach błyskawicznych są uszkodzone, zgłoś błąd .
Rozwiązywanie problemów
Jeśli test zakończy się niepowodzeniem, wyświetli się komunikat Nie udało się zainstalować MyCtsModule.apk na URZĄDZENIU. Powód: „-116” , poszukaj komunikatów PackageManager na logcat. Na przykład, jeśli jest napisane Nie można zastąpić pełnej aplikacji aplikacją błyskawiczną: twoja_aplikacja , następnie adb najpierw odinstaluj aplikację.