Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Praca z urządzeniami w TF
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Trade Federation używa abstrakcji o nazwie ITestDevice
do przeprowadzania testów. Ta abstrakcja obiektywizuje urządzenie z Androidem o najniższym wspólnym mianowniku:
- ma numer seryjny;
- Stan: online, dostępny, odzyskiwanie lub niedostępny.
- Ma pewien stopień niezawodności. Jeśli na przykład uruchamiamy polecenie, możemy odróżnić przypadek, w którym polecenie nie zostało jeszcze wykonane, od przypadku, w którym urządzenie nie obsługuje poleceń, oraz od przypadku, w którym urządzenie przestało odpowiadać podczas wykonywania polecenia.
Klasy urządzeń
3 główne implementacje ITestDevice
odpowiadają 3 częstym przypadkom użycia.
Urządzenie fizyczne
Jest to urządzenie fizyczne połączone z hostem TF przez USB lub za pomocą funkcji TCP w adb. Klasa TestDevice znajduje się w bibliotece ddmlib, która jest interfejsem Java dla adb. Oznacza to, że każde fizyczne urządzenie wymienione w adb devices
może zostać ucieleśnione i używane jako TestDevice
.
Emulator
Emulatory są obsługiwane w specjalny sposób przez TF, ponieważ działają w ramach innego procesu. Aby korzystać z emulacji, podaj w komendzie argument --emulator
. Więcej informacji znajdziesz w klasach LocalSdkBuildProvider i SdkAvdPreparer.
Brak urządzenia
Załóżmy, że masz test, który w ogóle nie wchodzi w interakcję z urządzeniem. Może na przykład pobrać plik z jakiejś usługi i sprawdzić, czy jest on prawidłowy. NullDevice to ITestDevice
, który jest tylko zastępnikiem. Ma numer seryjny w postaci
null-device-N
, a większość próbowanych operacji albo nie wykonuje żadnej operacji, albo powoduje wyjątek.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[],null,["# Work with devices in TF\n\nTrade Federation uses an abstraction called\n[ITestDevice](/reference/com/android/tradefed/device/ITestDevice) to\nrun tests. This abstraction objectifies the lowest-common-denominator Android device:\n\n- It has a serial number\n- It has a state: Online, Available, Recovery, or Not Available\n- It has some notion of reliability. For instance, if we run a command, we can differentiate between the case where the command hasn't finished yet, the case where the device doesn't support running commands, and the case where the device has become unresponsive while running the command.\n\nDevice classes\n--------------\n\nThe three primary implementations of `ITestDevice` represent three common\nusecases.\n\n### Physical device\n\nThis is an actual piece of hardware, connected to the TF host machine either by USB, or by using\nadb's TCP feature. The [TestDevice](/reference/com/android/tradefed/device/TestDevice) class sits atop the ddmlib library, which is a Java interface to adb. So any\nphysical device listed in `adb devices` can be instantiated and used as a\n`TestDevice`.\n\n### Emulator\n\nEmulators are handled specially by TF because they live in another process. To interact with an\nEmulator, specify the `--emulator` argument for the command. See\n[LocalSdkBuildProvider](/reference/com/android/tradefed/build/LocalSdkBuildProvider) and\n[SdkAvdPreparer](/reference/com/android/tradefed/targetprep/SdkAvdPreparer) for more info.\n\n### No device\n\nSuppose you have a test that doesn't interact with a device at all. For instance, it might just\ndownload a file from some service and verify that the file itself is valid. The\n[NullDevice](/reference/com/android/tradefed/device/NullDevice) is an `ITestDevice` that is just a stub. It has a serial number like\n`null-device-N`, and most attempted operations either no-op silently or throw."]]