Aplikacje błyskawiczne to kluczowa funkcja Androida 10, dlatego muszą działać prawidłowo. Aplikacje błyskawiczne są instalowane niejawnie, dlatego mają ograniczony zestaw funkcji i działają w bardziej restrykcyjnym piaskownicy zabezpieczeń. Ze względu na powszechny charakter tych ograniczeń każda część systemu może nie działać prawidłowo z aplikacjami błyskawicznymi. Tworzony jest podzbiór testów CTS, aby zapewnić, że zachowania dozwolone przez aplikacje błyskawiczne działają. Kluczowym założeniem jest zminimalizowanie wzrostu rozmiaru CTS przez wyodrębnienie minimalnego zestawu testów do przeniesienia. Uruchomienie CTS w trybie aplikacji błyskawicznych oznacza zainstalowanie testowego pliku APK jako aplikacji błyskawicznej i uruchomienie testów.
Ograniczenia aplikacji błyskawicznych
Aplikacje błyskawiczne nie są instalowane przez użytkownika, dlatego działają w ograniczonej piaskownicy z następującymi ograniczeniami:
- Mogą mieć tylko określone uprawnienia.
- Nie mogą widzieć innych aplikacji, chyba że są one oznaczone jako widoczne dla aplikacji błyskawicznych.
- Mogą uzyskiwać dostęp tylko do określonych ustawień systemowych.
- Mogą uzyskiwać dostęp tylko do określonych właściwości systemu.
- Nie mogą udostępniać usług ani dostawców.
- Mogą odbierać i wysyłać dane zgodnie ze specjalnymi regułami dotyczącymi transmisji.
Ponadto aplikacje błyskawiczne muszą wyrazić zgodę na dodanie większej liczby ograniczeń przez nową piaskownicę zabezpieczeń. Szeroki zakres specjalnych zachowań związanych z aplikacjami błyskawicznymi obejmuje całą platformę, dlatego musi istnieć sposób na sprawdzenie, czy aplikacje błyskawiczne działają zgodnie z oczekiwaniami na wszystkich urządzeniach w ekosystemie.
Testy uruchamiane w trybie aplikacji błyskawicznych
Nie wszystkie moduły CTS mają testy, które można zastosować do aplikacji błyskawicznych. Jeśli funkcja testowana przez moduł wchodzi w interakcję z serwerem systemowym, te testy należy uruchomić w trybie aplikacji błyskawicznych. Na przykład testy OpenGL nie wchodzą w interakcję z serwerem systemowym, dlatego nie trzeba ich uruchamiać w trybie aplikacji błyskawicznych. Z kolei testy ułatwień dostępu wchodzą w interakcję z serwerem systemowym, dlatego należy je uruchomić 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ługi w przypadku architektury wtykowej (np. AccessibilityService) nie ma zastosowania w trybie aplikacji błyskawicznych, ponieważ aplikacje błyskawiczne nie mogą udostępniać usług innym aplikacjom (w tym platformie). Z kolei testy sprawdzające zachowania po stronie aplikacji mają zastosowanie w trybie aplikacji błyskawicznych. Innym przykładem jest test, który sprawdza zachowania związane z uprawnieniami, których aplikacja błyskawiczna nie może mieć. Takie testy nie są istotne w trybie aplikacji błyskawicznych. Istnieje zestaw testów, które mają zastosowanie tylko do aplikacji błyskawicznych i sprawdzają reguły dotyczące ich zachowania, np. nieudostępniania usług lub niewidoczności innych aplikacji. Zwykle są one już napisane i nie wymagają przenoszenia.
Błędy testów w trybie aplikacji błyskawicznych
Jeśli test kończy się niepowodzeniem, ponieważ sprawdza funkcję, do której aplikacje błyskawiczne nie mają dostępu, nie ma on zastosowania w trybie aplikacji błyskawicznych. Oznacz test, aby był uruchamiany tylko w trybie pełnej aplikacji, dodając do niego adnotację @AppModeFull. Możesz zastosować tę adnotację na poziomie klasy, aby wykluczyć wszystkie testy w niej.
Jeśli test kończy się niepowodzeniem, ponieważ jakaś funkcja dostępna dla aplikacji błyskawicznych jest uszkodzona, zgłoś błąd.
Rozwiązywanie problemów
Jeśli test kończy się niepowodzeniem z powodu Failed to install MyCtsModule.apk on DEVICE. Reason: '-116' , poszukaj w logcat komunikatów PackageManager. Jeśli na przykład pojawi się komunikat Can't replace Full App with Instant App: your_app, najpierw odinstaluj aplikację za pomocą polecenia adb uninstall.