Aplikacje błyskawiczne są kluczową funkcją Androida 10, dlatego ważne jest, aby działały prawidłowo. Aplikacje błyskawiczne są instalowane w sposób domyślny, dlatego mają ograniczony zestaw funkcji i działają w bardziej restrykcyjnej bezpiecznej piaskownicy. Ze względu na powszechny charakter tych ograniczeń każda część systemu może nie działać prawidłowo z aplikacją Instant Apps. Tworzony jest podzbiór testów CTS, aby sprawdzić, czy działają funkcje obsługiwane przez Aplikacje błyskawiczne. Najważniejszym celem jest zminimalizowanie wzrostu rozmiaru CTS poprzez 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 ograniczonym środowisku piaskownicy z tymi ograniczeniami:
- Może zawierać tylko określone uprawnienia.
- Nie widzi innych aplikacji, chyba że są one oznaczone jako widoczne dla aplikacji błyskawicznych.
- mają dostęp tylko do niektórych ustawień systemu.
- mają dostęp tylko do niektórych właściwości systemu;
- Nie można udostępniać usług ani dostawców.
- Może odbierać i wysyłać wiadomości z specjalnymi zasadami dotyczącymi transmisji.
Ponadto aplikacje błyskawiczne muszą wyrazić zgodę na to, aby nowa piaskownica bezpieczeństwa mogła dodawać więcej ograniczeń. Ten szeroki zakres specjalnych zachowań aplikacji błyskawicznych obejmuje całą platformę, więc trzeba mieć możliwość sprawdzenia, czy aplikacje błyskawiczne działają zgodnie z oczekiwaniami na wszystkich urządzeniach w ekosystemie.
Testy przeprowadzane w trybie aplikacji błyskawicznych
Nie wszystkie moduły CTS zawierają testy odpowiednie dla aplikacji błyskawicznych. Jeśli funkcja testowana przez moduł wchodzi w interakcję z serwerem systemowym, testy należy przeprowadzić w trybie aplikacji natychmiastowych. Na przykład testy OpenGL nie współpracują z serwerem systemowym, więc nie trzeba ich uruchamiać w trybie aplikacji błyskawicznych, podczas gdy testy dostępności współpracują z serwerem systemowym i trzeba je uruchamiać w trybie aplikacji błyskawicznych.
Oprócz określenia, które moduły są odpowiednie, użytkownicy muszą też określić, które testy w tych modułach są istotne. Na przykład testowanie zachowań związanych z poszczególnymi usługami w ramach architektury z możliwością podłączania usług (np. usługi AccessibilityService) nie jest możliwe w trybie aplikacji błyskawicznych, ponieważ aplikacje błyskawiczne nie mogą udostępniać usług innym aplikacjom (w tym platformie), a testy weryfikujące zachowania po stronie aplikacji są odpowiednie w trybie aplikacji błyskawicznych. Innym przykładem jest test, który sprawdza, czy zachowanie związane z uprawnieniem, którego aplikacja błyskawiczna nie może uzyskać, jest odpowiednie w trybie aplikacji błyskawicznej. Istnieje zestaw testów, które mają zastosowanie tylko do aplikacji błyskawicznych i sprawdzają, czy ich działanie jest zgodne z zasadami, np. czy nie ujawniają usług lub nie widzą innych aplikacji. Zazwyczaj są one już napisane i nie wymagają przenoszenia.
Błędy testów w trybie aplikacji błyskawicznych
Jeśli test się nie powiedzie, ponieważ weryfikuje funkcję, do której aplikacje błyskawiczne nie mają dostępu, nie będzie on odpowiedni w trybie aplikacji błyskawicznych. Oznacz test, aby był wykonywany tylko w trybie pełnej aplikacji, dodając adnotację @AppModeFull
. Możesz zastosować tę adnotację na poziomie klasy, aby wykluczyć wszystkie testy w niej.
Jeśli test się nie powiedzie, ponieważ niektóre funkcje dostępne dla aplikacji błyskawicznych są uszkodzone, zgłoś błąd.
Rozwiązywanie problemów
Jeśli test się nie powiedzie i wyświetli się komunikat Nie udało się zainstalować pliku MyCtsModule.apk na urządzeniu. Przyczyna: „-116”. Poszukaj komunikatów PackageManager w logcat. Jeśli na przykład zobaczysz komunikat Nie można zastąpić aplikacji Full App aplikacją błyskawiczną: your_app, najpierw odinstaluj aplikację za pomocą adb.