自 2025 年 3 月 27 日起,我們建議您使用 android-latest-release
而非 aosp-main
建構及貢獻 AOSP。詳情請參閱「Android 開放原始碼計畫變更」。
多目標準備者
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
與目標準備工具類似,多目標準備工具可讓您同時設定多部裝置。舉例來說,如果要透過藍牙連線兩部裝置進行測試,就會使用這個方法。
基礎介面
基礎介面為 IMultiTargetPreparer
,可讓您實作要執行的 setUp
方法。建議您實作基本抽象類別 BaseMultiTargetPreparer
,該類別提供內建停用功能,可輕鬆停用準備工具。
多目標準備工具也會直接提供 tearDown
方法,用於任何清理作業。
建議
建議您將每位準備者限制為單一主要函式。這樣一來,準備者就能更輕鬆地重複使用。
新增新的準備者前,請先查看可用的準備者清單,以免重複工作。您可以在 tools/tradefederation/core/src/com/android/tradefed/targetprep/multi/
中找到準備者。
多目標準備人員可以設定的裝置數量沒有限制。所有裝置皆可在要實作的介面 IInvocationContext
中使用。
XML 設定
物件代碼為 multi_target_preparer
,例如:
<multi_target_preparer class="com.android.tradefed.targetprep.multi.HelloWorldMultiTargetPreparer">
</multi_target_preparer>
運算順序
multi_target_preparer
會在 target_preparer
「之後」執行 setUp
。
multi_target_preparer
會在前執行目標清理工具 tearDown
。
這不一定能執行所有設定步驟,因此您可以在 XML 中將多目標準備工具定義為 multi_pre_target_preparer
,並在 target_preparer
例項之前執行。
<multi_pre_target_preparer class="com.android.tradefed.targetprep.multi.HelloWorldMultiTargetPreparer">
</multi_pre_target_preparer>
整體作業順序如下:
multi_pre_target_preparer setUp
target_preparer setUp
multi_target_preparer setUp
multi_target_preparer tearDown
target_preparer tearDown
multi_pre_target_preparer tearDown
任何多目標準備工具都可以視需要的設定順序宣告為 multi_target_preparer
或 multi_pre_target_preparer
。
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2025-07-27 (世界標準時間)。
[[["容易理解","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-27 (世界標準時間)。"],[],[],null,["# Multi-target preparers\n\nSimilar to a\n[target preparer](/docs/core/tests/tradefed/architecture/target-preparer), a\nmulti-target preparer allows setup of multiple devices together. For example,\nthis would be used when connecting two devices with Bluetooth for testing.\n\nBase interface\n--------------\n\nThe base interface is\n[`IMultiTargetPreparer`](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/targetprep/multi/IMultiTargetPreparer.java),\nwhich allows implementing a `setUp` method to be executed. We recommend\nimplementing our basic abstract class\n[`BaseMultiTargetPreparer`](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/targetprep/multi/BaseMultiTargetPreparer.java),\nwhich provides a built-in disablement feature to easily disable a preparer.\n\nMulti-target preparers also directly provide a `tearDown` method for any cleanup\noperation.\n\nRecommendation\n--------------\n\nWe recommend limiting each preparer to a single main function. This allows\nfor easier reuse of preparers.\n\nAlso check the list of available preparers before adding a new one, to\navoid duplicating work. Preparers are available in\n[`tools/tradefederation/core/src/com/android/tradefed/targetprep/multi/`](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/targetprep/multi).\n\nThere's no limit to the number of devices that a multi-target preparer can\nset up. All the devices are available in `IInvocationContext` of the\ninterface to implement.\n\nXML configuration\n-----------------\n\nThe object tag is `multi_target_preparer`, for example: \n\n \u003cmulti_target_preparer class=\"com.android.tradefed.targetprep.multi.HelloWorldMultiTargetPreparer\"\u003e\n \u003c/multi_target_preparer\u003e\n\nOperation order\n---------------\n\n1. `multi_target_preparer` executes `setUp` **after** `target_preparer`.\n2. `multi_target_preparer` executes `tearDown` **before** target cleaners.\n\nThis doesn't always allow for performance of all setup steps, so it's possible\nin the XML to define the multi-target preparer as `multi_pre_target_preparer`\nand execute it before `target_preparer` instances. \n\n \u003cmulti_pre_target_preparer class=\"com.android.tradefed.targetprep.multi.HelloWorldMultiTargetPreparer\"\u003e\n \u003c/multi_pre_target_preparer\u003e\n\nThe overall operation order is as followed:\n\n1. `multi_pre_target_preparer setUp`\n2. `target_preparer setUp`\n3. `multi_target_preparer setUp`\n4. `multi_target_preparer tearDown`\n5. `target_preparer tearDown`\n6. `multi_pre_target_preparer tearDown`\n\nAny multi-target preparer can be declared as `multi_target_preparer` or\n`multi_pre_target_preparer` depending of what order of setup is required."]]