Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Làm việc với các thiết bị trong TF
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Trade Federation sử dụng một lớp trừu tượng có tên là ITestDevice
để chạy kiểm thử. Mô-đun trừu tượng này sẽ tạo đối tượng cho thiết bị Android có mẫu số chung nhỏ nhất:
- Có số sê-ri
- Trạng thái: Trực tuyến, Có sẵn, Đang khôi phục hoặc Không có sẵn
- Phương thức này có một số khái niệm về độ tin cậy. Ví dụ: nếu chạy một lệnh, chúng ta có thể phân biệt giữa trường hợp lệnh chưa hoàn tất, trường hợp thiết bị không hỗ trợ chạy lệnh và trường hợp thiết bị không phản hồi trong khi chạy lệnh.
Lớp thiết bị
Ba cách triển khai chính của ITestDevice
đại diện cho ba trường hợp sử dụng phổ biến.
Thiết bị thực
Đây là một phần cứng thực tế, được kết nối với máy chủ TF qua USB hoặc bằng cách sử dụng tính năng TCP của adb. Lớp TestDevice nằm trên thư viện ddmlib, đây là giao diện Java cho adb. Vì vậy, mọi thiết bị thực tế được liệt kê trong adb devices
đều có thể được tạo bản sao và sử dụng làm TestDevice
.
Trình mô phỏng
Trình mô phỏng được TF xử lý đặc biệt vì chúng nằm trong một quy trình khác. Để tương tác với Trình mô phỏng, hãy chỉ định đối số --emulator
cho lệnh. Hãy xem LocalSdkBuildProvider và SdkAvdPreparer để biết thêm thông tin.
Không có thiết bị nào
Giả sử bạn có một kiểm thử không tương tác với thiết bị nào cả. Ví dụ: trình tải xuống có thể chỉ tải một tệp xuống từ một số dịch vụ và xác minh rằng chính tệp đó là hợp lệ. NullDevice là một ITestDevice
chỉ là một đoạn mã giả. Lớp này có số sê-ri như null-device-N
và hầu hết các thao tác đã thử đều không hoạt động hoặc gửi.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 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."]]