W Androidzie 11 lub nowszym moduły pomocnicze pakietu CTS (Compatibility Test Suite) do interakcji z urządzeniem umożliwiają dostosowanie sposobu, w jaki niektóre testy CTS wchodzą w interakcję z interfejsem użytkownika na konkretnym urządzeniu. Oznacza to że można wykonywać działania, takie jak zastępowanie elementu interfejsu użytkownika, który nie jest objęty dokumentem definicji zgodności z Androidem (CDD) ani dokumentacją interfejsu API, a jednocześnie przechodzić testy CTS.
Producenci OEM, którzy chcą dostosować interfejs użytkownika Androida podczas tworzenia produktu i muszą przejść testy CTS, mogą zaimplementować moduły pomocnicze. Jeśli używasz domyślnej implementacji Androida, nie musisz wykonywać żadnych dodatkowych działań.
Implementowanie modułów pomocniczych
Wymagania dotyczące dostosowania interfejsu użytkownika
Sprawdź, czy w dokumencie CDD lub modułach Mainline nie ma wymagań dotyczących interfejsu użytkownika. Jeśli żądany interfejs użytkownika jest objęty dokumentem CDD lub modułami Mainline, nie można go dostosować.
Jeśli testy CTS, które wchodzą w interakcję z żądanym interfejsem użytkownika, nie korzystają z platformy pomocniczej, nie można dostosować tego interfejsu. Zanim będzie można zmienić interfejs użytkownika, skontaktuj się z właścicielem testu, aby przekonwertować moduł testowy.
W przeciwnym razie możesz dostosować interfejs użytkownika.
Przepływ pracy implementacji
- Dostosuj interfejs użytkownika do potrzeb konkretnego produktu.
- Wyznacz istniejące moduły pomocnicze AOSP jako podklasy modułów testowych CTS, które muszą wchodzić w interakcję z interfejsem użytkownika. Zastąp niezbędne interakcje odpowiednio do dostosowanego interfejsu użytkownika. Zastąpienia różnią się w zależności od rodzaju zmian.
- Podklasy OEM znajdują się w pakiecie OEM, np.
com.[oem].cts.helpers. - Każda podklasa OEM ma wspólną nazwę z prefiksem, który odróżnia ją od implementacji AOSP, która ma prefiks
Default.
- Podklasy OEM znajdują się w pakiecie OEM, np.
- Skompiluj moduły pomocnicze do pliku APK zgodnie z tymi konwencjami narzędzia do uruchamiania testów.
- W pliku
Android.bpnależy zadeklarowaćandroid_test_helper_appo tej samej nazwie co pakiet. - W pliku
AndroidManifest.xmlpliku APK należy zadeklarować właściwość metadanych o nazwieinteraction-helpers-prefixz wartością prefiksu klasy wybranego w poprzednim punkcie. - Aplikacja powinna zależeć od
cts-helpers-core,cts-helpers-interfacesicom.android.cts.helpers.aosp. Jeśli moduły pomocnicze OEM w pełni implementują wszystkie odpowiednie interfejsy,com.android.cts.helpers.aospjest opcjonalne.
- W pliku
- Ustaw właściwość
ro.vendor.cts_interaction_helper_packagesw obrazie urządzenia, aby uwzględnić nazwę pliku APK. Jeśli musisz rozdzielić implementacje modułów pomocniczych na kilka plików APK, ta właściwość może zawierać listę pakietów rozdzielonych dwukropkami. - Upewnij się, że plik APK jest dostępny w katalogu
testcasespodczas uruchamiania Tradefed dla CTS. W razie potrzeby sprawdź, czy wybrana jest oczekiwana klasa implementacji modułu pomocniczego, analizując wiadomości logcat. - Opcjonalnie, ale zdecydowanie zalecane: prześlij implementację modułu pomocniczego do AOSP lub udostępnij ją do testowania przez inne firmy.
Przykładowa implementacja modułu pomocniczego
Na przykład CtsPrintTestCases oczekuje modułu pomocniczego z interfejsem zdefiniowanym w ICtsPrintHelper. Implementacja AOSP nosi nazwę com.android.cts.helpers.aosp.DefaultCtsPrintHelper.
Jeśli dostosujesz interfejs drukowania, możesz utworzyć com.oem.cts.helpers.OemCtsPrintHelper, który jest podklasą DefaultCtsPrintHelper.
android_test_helper_app w Android.bp ma nazwę com.oem.cts.helpers,
co powoduje utworzenie com.oem.cts.helpers.apk,
i zadeklarowanie interaction-helpers-prefix jako Oem w AndroidManifest.xml.
Właściwość urządzenia ro.vendor.cts_interaction_helper_packages jest ustawiona na com.oem.cts.helpers.
Implementacje referencyjne
Implementacje referencyjne obejmują interfejsy w cts/libs/helpers i domyślne moduły pomocnicze AOSP w cts/helpers. Interfejs najwyższego poziomu jest opisany w cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java.
Aby połączyć test CTS z jego modułami pomocniczymi, właściciele testów mogą użyć definicji @Rule opisanej w cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java.
Każdy moduł CTS, który korzysta z platformy i oczekiwanych działań modułu pomocniczego, jest opisany w interfejsie zdefiniowanym w cts/libs/helpers/core/src/com/android/cts/helpers.
Uruchamianie testów CTS
Testowanie bez modułów pomocniczych
Oprócz jednej właściwości opcja testowania bez modułów pomocniczych nie jest dostępna w czasie działania na urządzeniu, ale opcjonalnie modyfikuje sposób, w jaki testy CTS wchodzą w interakcję z urządzeniem. Jeśli musisz uruchomić CTS bez implementacji modułów pomocniczych, masz 2 możliwości:
- Usuń właściwość
ro.vendor.cts_interaction_helper_packagesz urządzenia. Uniemożliwi to korzystanie z modułów pomocniczych w tej kompilacji. - Przed uruchomieniem CTS usuń plik APK modułu pomocniczego z katalogu
testcases. Uniemożliwi to korzystanie z modułów pomocniczych w przypadku wszystkich uruchomień, dopóki plik APK nie zostanie przywrócony dotestcases.
Możesz zmienić ustawienia domyślne za pomocą argumentów Tradefed i właściwości ro.vendor.cts_interaction_helper_packages, z której wczytywany jest plik APK modułu pomocniczego.
Oczekiwane wartości lub zakresy poszczególnych dostępnych ustawień znajdziesz poniżej.
ro.vendor.cts_interaction_helper_packagesto ciąg tekstowy zawierający nazwy pakietów rozdzielone dwukropkami. Może przyjmować dowolną wartość, która jest prawidłowym wyborem pakietu dla implementacji modułu pomocniczego OEM.cts-tradefedakceptuje argumentdevice-interaction-helper:property-name, który tymczasowo zmienia oczekiwaną właściwość dla jednego uruchomienia testu, np.--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'. Wartość nazwy właściwości może być dowolną właściwością ustawioną na urządzeniu. Wartość właściwości podlega tym samym ograniczeniom co właściwośćro.vendor.cts_interaction_helper_packagesopisana powyżej.
Testowanie z dostosowaniami
Domyślnie implementacje referencyjne przechodzą testy CTS w przypadku standardowego Androida. Sprawdź, czy implementacje partnerów przechodzą testy CTS z dostosowaniami interfejsu użytkownika. Uruchom moduły CTS, które obejmują dostosowany interfejs użytkownika lub funkcje.
Niektóre moduły lub moduły pomocnicze CTS mogą jeszcze nie obsługiwać niektórych dostosowań.
- Moduł CTS, który wchodzi w interakcję z interfejsem użytkownika, który chcesz dostosować, może nie korzystać z platformy pomocniczej. Oczekuje się, że moduły CTS zostaną przekonwertowane na platformę pomocniczą na podstawie zapotrzebowania i priorytetów właściciela testu. Prześlij prośby o konwersję na wczesnym etapie procesu, aby mieć pewność, że konwersja zostanie uwzględniona w harmonogramie, podobnie jak w przypadku próśb o zmiany w CTS w celu obsługi planowanych funkcji.
- Funkcje udostępniane przez istniejący moduł pomocniczy mogą nie w pełni uwzględniać dostosowań, które chcesz wprowadzić. Funkcje pomocnicze powinny abstrahować od zależności interfejsu użytkownika. Jeśli funkcja pomocnicza ma pośrednią zależność od interfejsu użytkownika, można ją traktować podobnie jak błędy w CTS.