Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Работа с устройствами в TF
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Trade Federation использует абстракцию ITestDevice
для запуска тестов. Эта абстракция объективирует Android-устройство с наименьшим общим знаменателем:
- Имеет серийный номер
- Он имеет состояние: «В сети», «Доступно», «Восстановление» или «Недоступно».
- Есть какое-то понятие надежности. Например, если мы запускаем команду, мы можем различать случай, когда команда еще не завершена, случай, когда устройство не поддерживает выполнение команд, и случай, когда устройство перестает отвечать на запросы во время выполнения команды.
Классы устройств
Три основные реализации ITestDevice
представляют три распространенных варианта использования.
Физическое устройство
Это настоящее аппаратное обеспечение, подключенное к хост-компьютеру TF либо через USB, либо с помощью функции TCP adb. Класс TestDevice находится поверх библиотеки ddmlib, которая представляет собой интерфейс Java для adb. Таким образом, любое физическое устройство, указанное в adb devices
может быть создано и использовано как TestDevice
.
Эмулятор
Эмуляторы обрабатываются TF специально, поскольку они находятся в другом процессе. Для взаимодействия с эмулятором укажите аргумент --emulator
для команды. Дополнительные сведения см. в разделах LocalSdkBuildProvider и SdkAvdPreparer .
Нет устройства
Предположим, у вас есть тест, который вообще не взаимодействует с устройством. Например, он может просто загрузить файл с какого-либо сервиса и проверить, что сам файл действителен. NullDevice — это ITestDevice
, который представляет собой просто заглушку. Он имеет серийный номер, например null-device-N
, и большинство попыток операций либо выполняются автоматически, либо выбрасываются.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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."]]