CTS dla aplikacji błyskawicznych

Aplikacje błyskawiczne są kluczową funkcją Androida 10, dlatego muszą działać prawidłowo. Aplikacje natychmiastowe są instalowane w sposób dorozumiany, więc mają ograniczony zestaw funkcji i działają w bardziej restrykcyjnym środowisku piaskownicy zabezpieczeń. Ze względu na powszechny charakter tych ograniczeń każda część systemu może nie działać prawidłowo z aplikacjami natychmiastowymi. Tworzony jest podzbiór testów CTS, aby zapewnić prawidłowe działanie zachowań dozwolonych w przypadku aplikacji błyskawicznych. Głównym założeniem jest zminimalizowanie wzrostu rozmiaru CTS przez wyodrębnienie minimalnego zestawu testów do przeniesienia. CTS w trybie aplikacji błyskawicznych oznacza zainstalowanie pliku APK testu jako aplikacji błyskawicznej i przeprowadzenie testów.

Ograniczenia dotyczące aplikacji błyskawicznych

Aplikacje błyskawiczne nie są instalowane przez użytkownika, więc działają w ograniczonym środowisku piaskownicy, w którym obowiązują te ograniczenia:

  • Może mieć tylko określone uprawnienia.
  • Nie możesz wyświetlać innych aplikacji, chyba że są one oznaczone jako widoczne dla aplikacji błyskawicznych.
  • ma dostęp tylko do niektórych ustawień systemu;
  • Może uzyskiwać 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 zgodnie ze specjalnymi regułami dotyczącymi transmisji.

Dodatkowo aplikacje natychmiastowe muszą wyrazić zgodę na to, aby nowa piaskownica bezpieczeństwa mogła dodawać więcej ograniczeń. Ten 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 przeprowadzane w trybie aplikacji błyskawicznych

Nie wszystkie moduły CTS mają testy, które można zastosować w przypadku aplikacji natychmiastowych. Jeśli funkcjonalność testowana przez moduł wchodzi w interakcję z serwerem systemowym, testy te należy uruchamiać w trybie aplikacji natychmiastowych. Na przykład testy OpenGL nie wchodzą w interakcję z serwerem systemowym, więc nie trzeba ich uruchamiać w trybie aplikacji błyskawicznych. Z kolei testy ułatwień dostępu wchodzą w interakcję z serwerem systemowym, więc trzeba je uruchamiać w trybie aplikacji błyskawicznych.

Oprócz określenia, które moduły mają zastosowanie, użytkownicy muszą ustalić, 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 natychmiastowej, ponieważ aplikacje natychmiastowe nie mogą udostępniać usług innym aplikacjom (w tym platformie), natomiast testy weryfikujące zachowania po stronie aplikacji mają zastosowanie w trybie aplikacji natychmiastowej. Innym przykładem jest test, który weryfikuje zachowania związane z uprawnieniami, których aplikacja błyskawiczna nie może mieć. W trybie aplikacji błyskawicznej nie są one istotne. Istnieje zestaw testów, które mają zastosowanie tylko do aplikacji natychmiastowych i sprawdzają reguły dotyczące ich działania, np. czy nie udostępniają usług lub czy nie widzą innych aplikacji. Zwykle są one już napisane i nie wymagają przenoszenia.

Błędy testów w trybie aplikacji błyskawicznych

Jeśli test nie powiódł się, ponieważ weryfikuje funkcje, do których aplikacje błyskawiczne nie mają dostępu, nie ma zastosowania w trybie aplikacji błyskawicznych. Oznacz test, aby był przeprowadzany 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 zakończy się niepowodzeniem, ponieważ niektóre funkcje dostępne dla aplikacji błyskawicznych nie działają prawidłowo, zgłoś błąd.

Rozwiązywanie problemów

Jeśli test zakończy się niepowodzeniem z komunikatem Failed to install MyCtsModule.apk on DEVICE. Przyczyna: „-116”. W dzienniku logcat poszukaj komunikatów z 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.