IDeviceManager

public interface IDeviceManager

com.android.tradefed.device.IDeviceManager


用於管理可用裝置的測試介面。

摘要

巢狀類別

interface IDeviceManager.IFastbootListener

監聽快速啟動狀態變更的事件監聽器。 

公用方法

abstract void addDeviceMonitor(IDeviceMonitor mon)

新增 IDeviceMonitor

abstract void addFastbootListener(IDeviceManager.IFastbootListener listener)

通知管理員,監聽器對 fastboot 狀態變更感興趣。

abstract void addMonitoringTcpFastbootDevice(String serial, String fastboot_serial)

將裝置新增至 Fastboot 監控器。

abstract ITestDevice allocateDevice(IDeviceSelection options, boolean isTemporary)

要求測試符合特定條件的裝置。

abstract ITestDevice allocateDevice(IDeviceSelection options)

要求測試符合特定條件的裝置。

abstract ITestDevice allocateDevice()

申請實體裝置進行測試

abstract ITestDevice connectToTcpDevice(String ipAndPort)

使用 adb-over-tcp 連線至裝置

這個方法會分配新裝置,最終應透過 disconnectFromTcpDevice(com.android.tradefed.device.ITestDevice) 釋放

傳回的 ITestDevice 會處於線上狀態,但可能不會回應。

abstract boolean disconnectFromTcpDevice(ITestDevice tcpDevice)

中斷與 ADB-over-TCP 連線的裝置連線。

abstract void displayDevicesInfo(PrintWriter printWriter, boolean includeStub)

輸出使用者友善的說明,其中包含已知裝置清單、裝置狀態,以及常用 IDeviceSelection 選項的值。

abstract CommandResult executeCmdOnAvailableDevice(String serial, String command, long timeout, TimeUnit timeUnit)

輔助方法,可在可用的裝置上執行殼層指令。

abstract ITestDevice forceAllocateDevice(String serial)

粗魯地分配裝置,即使目前無法使用也一樣。

abstract void freeDevice(ITestDevice device, FreeDeviceState state)

將裝置退回裝置池

如果嘗試退回先前未分配的裝置,系統會忽略該裝置。

abstract String getAdbPath()

傳回要使用的 ADB 二進位檔路徑。

abstract String getAdbVersion()

取得裝置管理員目前使用的 ADB 版本。

abstract DeviceDescriptor getDeviceDescriptor(String serial)

傳回具有指定序號的 DeviceDescriptor。

abstract String getFastbootPath()

傳回要使用的 fastboot 二進位檔路徑。

abstract void init(IDeviceSelection globalDeviceFilter, deviceMonitors)

使用裝置篩選器初始化裝置管理工具。

abstract void init()

初始化裝置管理工具。

abstract boolean isEmulator(String serial)

判斷指定序號是否代表模擬器

default boolean isFileSystemMountCheckEnabled()

傳回是否應在 NativeDeviceStateMonitor 中檢查檔案系統是否正確掛載。

abstract boolean isNullDevice(String serial)

判斷指定序號是否代表空值裝置

abstract void killEmulator(ITestDevice device)

關閉指定的模擬器。

abstract void launchEmulator(ITestDevice device, long bootTimeout, IRunUtil runUtil, emulatorArgs)

用來啟動模擬器的輔助方法。

abstract listAllDevices(boolean shortDescriptor)

傳回所有已知裝置的 DeviceDescriptor 清單

abstract listAllDevices()

傳回所有已知裝置的 DeviceDescriptor 清單

abstract ITestDevice reconnectDeviceToTcp(ITestDevice usbDevice)

輔助方法,可將指定的 USB 裝置切換至 ADB-over-TCP 模式,然後透過 connectToTcpDevice(String) 連線。

abstract void removeDeviceMonitor(IDeviceMonitor mon)

移除先前新增的 IDeviceMonitor

abstract void removeFastbootListener(IDeviceManager.IFastbootListener listener)

通知管理員,監聽器不再關心 fastboot 狀態變更。

abstract void restartAdbBridge()

重新啟動 (如果已呼叫 stopAdbBridge()) ADB 橋接器,且服務依賴 ADB 連線。

abstract void stopAdbBridge()

停止 ADB 橋接,並讓服務依賴 ADB 連線。

abstract void terminate()

停止裝置監控服務,並終止 ddm 程式庫。

abstract void terminateDeviceMonitor()

停止裝置監控器。

abstract void terminateDeviceRecovery()

停止裝置復原執行緒。

default void terminateHard(String reason)

例如 terminateHard()

abstract void terminateHard()

terminate() 相同,但會嘗試強制關閉 ADB。

abstract boolean waitForFirstDeviceAdded(long timeout)

等待第一個實體裝置連線。

公用方法

addDeviceMonitor

public abstract void addDeviceMonitor (IDeviceMonitor mon)

新增 IDeviceMonitor

參數
mon IDeviceMonitor

addFastbootListener

public abstract void addFastbootListener (IDeviceManager.IFastbootListener listener)

通知管理員,監聽器對 fastboot 狀態變更感興趣。

目前,只有在有一個或多個有效的事件監聽器時,IDeviceManager 才會監控 fastboot 中的裝置。

TODO:這是一種比較粗糙的解決方法,請找出更好的解決方法

addMonitoringTcpFastbootDevice

public abstract void addMonitoringTcpFastbootDevice (String serial, 
                String fastboot_serial)

將裝置新增至 Fastboot 監控器。Fastboot 監控器會使用「fastboot_serial」與裝置通訊。

參數
serial String:裝置的序號。

fastboot_serial String:裝置的快速啟動模式序號。

allocateDevice

public abstract ITestDevice allocateDevice (IDeviceSelection options, 
                boolean isTemporary)

要求測試裝置符合特定條件。

參數
options IDeviceSelection:裝置應符合的 IDeviceSelection

isTemporary boolean:是否應建立暫時的 NullDevice。

傳回
ITestDevice 測試用的 ITestDevice,或 null (如果沒有 ITestDevice)

allocateDevice

public abstract ITestDevice allocateDevice (IDeviceSelection options)

要求測試裝置符合特定條件。

參數
options IDeviceSelection:裝置應符合的 IDeviceSelection

傳回
ITestDevice 測試用的 ITestDevice,如果沒有 ITestDevice,則使用 null

allocateDevice

public abstract ITestDevice allocateDevice ()

申請實體裝置進行測試

傳回
ITestDevice 測試用的 ITestDevice,或 null (如果沒有 ITestDevice)

connectToTcpDevice

public abstract ITestDevice connectToTcpDevice (String ipAndPort)

使用 adb-over-tcp 連線至裝置

這個方法會分配新裝置,最終應透過 disconnectFromTcpDevice(com.android.tradefed.device.ITestDevice) 釋放

傳回的 ITestDevice 會上線,但可能不會回應。

請注意,在 TCP 已連線的裝置上執行重新啟動等動作,會中斷裝置的 TCP 連線,並導致 DeviceNotAvailableException

參數
ipAndPort String:要連線的裝置原始 IP 位址和通訊埠

傳回
ITestDevice 如果無法建立 TCP 連線,則為 ITestDevicenull

disconnectFromTcpDevice

public abstract boolean disconnectFromTcpDevice (ITestDevice tcpDevice)

中斷與 ADB-over-TCP 連線裝置的連線。

將裝置切換回 USB 模式,並釋放裝置。

參數
tcpDevice ITestDevice:目前處於 TCP 模式的裝置,先前透過 connectToTcpDevice(String) 分配

傳回
boolean true 切換至 USB 模式是否成功

displayDevicesInfo

public abstract void displayDevicesInfo (PrintWriter printWriter, 
                boolean includeStub)

輸出使用者友善的說明,其中包含已知裝置清單、裝置狀態,以及常用 IDeviceSelection 選項的值。

參數
printWriter PrintWriter:輸出說明的 ERROR(/PrintWriter)

includeStub boolean:是否要顯示虛設裝置。

executeCmdOnAvailableDevice

public abstract CommandResult executeCmdOnAvailableDevice (String serial, 
                String command, 
                long timeout, 
                TimeUnit timeUnit)

在可用的裝置上執行殼層指令的輔助方法。

參數
serial String:裝置序號。

command String:Shell 指令。

timeout long:指令完成的時間長度。

timeUnit TimeUnit:逾時時間的單位。

傳回
CommandResult CommandResult

forceAllocateDevice

public abstract ITestDevice forceAllocateDevice (String serial)

粗魯地分配裝置,即使目前無法使用也一樣。

如果裝置已分配,這項設定就不會產生任何影響。

參數
serial String:要分配的裝置序號

傳回
ITestDevice ITestDevice,如果無法分配則為 null

freeDevice

public abstract void freeDevice (ITestDevice device, 
                FreeDeviceState state)

將裝置退回裝置池

如果嘗試退回先前未分配的裝置,系統會忽略該裝置。

參數
device ITestDevice:將 ITestDevice 設為免費

state FreeDeviceStateFreeDeviceState。用於控管裝置是否會歸還至可用裝置資源池。

getAdbPath

public abstract String getAdbPath ()

傳回要使用的 ADB 二進位檔路徑。

傳回
String

getAdbVersion

public abstract String getAdbVersion ()

取得裝置管理員目前使用的 ADB 版本。

傳回
String

getDeviceDescriptor

public abstract DeviceDescriptor getDeviceDescriptor (String serial)

傳回具有指定序號的 DeviceDescriptor。

參數
serial String:裝置要取得的序號

傳回
DeviceDescriptor 所選裝置的 DeviceDescriptor,如果序號不符已知裝置,則為空值。

getFastbootPath

public abstract String getFastbootPath ()

傳回要使用的 fastboot 二進位檔路徑。

傳回
String

init

public abstract void init (IDeviceSelection globalDeviceFilter, 
                 deviceMonitors)

使用裝置篩選器初始化裝置管理員。這個篩選器可用於指示 DeviceManager 忽略特定已連結的裝置。

參數
globalDeviceFilter IDeviceSelection:裝置篩選器

deviceMonitors

init

public abstract void init ()

初始化裝置管理工具。在呼叫任何其他方法之前,必須呼叫這個方法一次,且只能呼叫一次。

isEmulator

public abstract boolean isEmulator (String serial)

判斷指定序號是否代表模擬器

參數
serial String

傳回
boolean

isFileSystemMountCheckEnabled

public boolean isFileSystemMountCheckEnabled ()

傳回是否應在 NativeDeviceStateMonitor 中檢查檔案系統是否已正確掛載。

傳回
boolean

isNullDevice

public abstract boolean isNullDevice (String serial)

判斷指定序號是否代表空值裝置

參數
serial String

傳回
boolean

killEmulator

public abstract void killEmulator (ITestDevice device)

關閉指定的模擬器。

直到 ADB 中沒有模擬器為止。如果模擬器已無法使用,這個指令就不會產生任何影響。

參數
device ITestDevice:代表模擬器關閉的 ITestDevice

擲回
DeviceNotAvailableException 如果模擬器無法關閉

launchEmulator

public abstract void launchEmulator (ITestDevice device, 
                long bootTimeout, 
                IRunUtil runUtil, 
                 emulatorArgs)

用於啟動模擬器的輔助方法。

會根據呼叫端指定的方式啟動模擬器

參數
device ITestDevice:代表已指派模擬器裝置的預留位置 ITestDevice

bootTimeout long:等待模擬器啟動所需的時間 (以毫秒為單位)

emulatorArgs :用於啟動模擬器的指令列引數

擲回
DeviceNotAvailableException 如果模擬器無法啟動或上線

listAllDevices

public abstract  listAllDevices (boolean shortDescriptor)

傳回所有已知裝置的 DeviceDescriptor 清單

參數
shortDescriptor boolean:是否將描述符限制為最少資訊

傳回
所有已知裝置的 DeviceDescriptor 清單

listAllDevices

public abstract  listAllDevices ()

傳回所有已知裝置的 DeviceDescriptor 清單

傳回
所有已知裝置的 DeviceDescriptor 清單

reconnectDeviceToTcp

public abstract ITestDevice reconnectDeviceToTcp (ITestDevice usbDevice)

輔助方法,可將指定的 USB 裝置切換至 ADB-over-TCP 模式,然後透過 connectToTcpDevice(String) 連線。

參數
usbDevice ITestDevice:裝置目前處於 USB 模式

傳回
ITestDevice 在 TCP 模式下新分配的 ITestDevice,或在無法建立 TCP 連線時的 null

擲回
DeviceNotAvailableException 如果與 usbDevice 的連線中斷且無法復原

removeDeviceMonitor

public abstract void removeDeviceMonitor (IDeviceMonitor mon)

移除先前新增的 IDeviceMonitor。如果未新增 mon,這個指令就不會產生任何作用。

參數
mon IDeviceMonitor

removeFastbootListener

public abstract void removeFastbootListener (IDeviceManager.IFastbootListener listener)

通知管理員,監聽器不再關心快速啟動狀態變更。

restartAdbBridge

public abstract void restartAdbBridge ()

重新啟動 (如果已呼叫 stopAdbBridge()) ADB 橋接器,且服務依賴 ADB 連線。

stopAdbBridge

public abstract void stopAdbBridge ()

停止 ADB 橋接,並讓服務依賴 ADB 連線。

終止

public abstract void terminate ()

停止裝置監控服務,並終止 ddm 程式庫。

必須在應用程式終止時呼叫。

terminateDeviceMonitor

public abstract void terminateDeviceMonitor ()

停止裝置監控器。

terminateDeviceRecovery

public abstract void terminateDeviceRecovery ()

停止裝置復原執行緒。

terminateHard

public void terminateHard (String reason)

例如 terminateHard()

參數
reason String:提供終止服務的選填原因。

terminateHard

public abstract void terminateHard ()

terminate() 相同,但會嘗試強制關閉 ADB。

waitForFirstDeviceAdded

public abstract boolean waitForFirstDeviceAdded (long timeout)

等待第一個實體裝置連線。如果裝置先前已連線,則會直接傳回 True。如果未新增裝置,則在逾時後會傳回 false。

參數
timeout long:返回 false 前等待的時間 (以毫秒為單位)。

傳回
boolean