DeviceManager
public
class
DeviceManager
extends Object
implements
IDeviceManager
java.lang.Object | |
↳ | com.android.tradefed.device.DeviceManager |
摘要
巢狀類別 | |
---|---|
class |
DeviceManager.FastbootDevice
快速系統啟動模式 (Fastboot mode) 中的裝置表示法。 |
欄位 | |
---|---|
public
static
final
String |
UNKNOWN_DISPLAY_STRING
顯示不明屬性的字串 |
protected
DeviceMonitorMultiplexer |
mDvcMon
|
protected
boolean |
mFastbootEnabled
|
公用建構函式 | |
---|---|
DeviceManager()
應從 |
公用方法 | |
---|---|
void
|
addAvailableDevice(IDevice stubDevice)
|
void
|
addAvailableNativeDevice(IDevice stubDevice)
|
void
|
addDeviceMonitor(IDeviceMonitor mon)
|
void
|
addFastbootDevice(DeviceManager.FastbootDevice fastbootDevice)
|
void
|
addFastbootListener(IDeviceManager.IFastbootListener listener)
通知管理員,監聽器對 fastboot 狀態變更感興趣。 |
void
|
addMonitoringTcpFastbootDevice(String serial, String fastboot_serial)
將裝置新增至 Fastboot 監控器。 |
ITestDevice
|
allocateDevice(IDeviceSelection options, boolean isTemporary)
要求測試符合特定條件的裝置。 |
ITestDevice
|
allocateDevice(IDeviceSelection options)
要求測試符合特定條件的裝置。 |
ITestDevice
|
allocateDevice()
申請實體裝置進行測試 |
ITestDevice
|
connectToTcpDevice(String ipAndPort)
使用 adb-over-tcp 連線至裝置
這個方法會分配新裝置,最終應透過
傳回的 |
boolean
|
disconnectFromTcpDevice(ITestDevice tcpDevice)
中斷與 ADB-over-TCP 連線的裝置連線。 |
void
|
displayDevicesInfo(PrintWriter stream, boolean includeStub)
輸出使用者友善的說明,其中包含已知裝置清單、裝置狀態和常用 |
CommandResult
|
executeCmdOnAvailableDevice(String serial, String command, long timeout, TimeUnit timeUnit)
在可用的裝置上執行殼層指令的輔助方法。 |
String
|
executeGlobalAdbCommand(String... cmdArgs)
執行未鎖定特定裝置的 ADB 指令,例如 |
ITestDevice
|
forceAllocateDevice(String serial)
粗魯地分配裝置,即使目前無法使用也一樣。 |
void
|
freeDevice(ITestDevice device, FreeDeviceState deviceState)
將裝置退回裝置池 如果嘗試退回先前未分配的裝置,系統會忽略該裝置。 |
String
|
getAdbPath()
傳回要使用的 ADB 二進位檔路徑。 |
String
|
getAdbVersion()
取得裝置管理員目前使用的 ADB 版本。 |
DeviceDescriptor
|
getDeviceDescriptor(String serial)
傳回具有指定序號的 DeviceDescriptor。 |
String
|
getFastbootPath()
傳回要使用的 fastboot 二進位檔路徑。 |
void
|
init(IDeviceSelection globalDeviceFilter,
初始化裝置管理工具。 |
void
|
init(IDeviceSelection globalDeviceFilter,
初始化裝置管理工具。 |
void
|
init()
初始化裝置管理工具。 |
boolean
|
isEmulator(String serial)
判斷指定序號是否代表模擬器 |
boolean
|
isFileSystemMountCheckEnabled()
傳回是否應在 |
boolean
|
isNullDevice(String serial)
判斷指定序號是否代表空值裝置 |
void
|
killEmulator(ITestDevice device)
關閉指定的模擬器。 |
void
|
launchEmulator(ITestDevice device, long bootTimeout, IRunUtil runUtil,
用於啟動模擬器的輔助方法。 |
|
listAllDevices(boolean shortDescriptor)
傳回所有已知裝置的 DeviceDescriptor 清單 |
|
listAllDevices()
傳回所有已知裝置的 DeviceDescriptor 清單 |
ITestDevice
|
reconnectDeviceToTcp(ITestDevice usbDevice)
輔助方法,可將指定的 USB 裝置切換至 ADB-over-TCP 模式,然後透過 |
void
|
removeDeviceMonitor(IDeviceMonitor mon)
移除先前新增的 |
void
|
removeFastbootListener(IDeviceManager.IFastbootListener listener)
通知管理員,監聽器不再關心 fastboot 狀態變更。 |
void
|
restartAdbBridge()
重新啟動 (如果已呼叫 |
void
|
stopAdbBridge()
停止 ADB 橋接,並讓服務依賴 ADB 連線。 |
void
|
terminate()
停止裝置監控服務,並終止 ddm 程式庫。 |
void
|
terminateDeviceMonitor()
停止裝置監控器。 |
void
|
terminateDeviceRecovery()
停止裝置復原執行緒。 |
void
|
terminateHard(String reason)
例如 |
void
|
terminateHard()
與 |
boolean
|
waitForFirstDeviceAdded(long timeout)
等待第一個實體裝置連線。 |
欄位
UNKNOWN_DISPLAY_STRING
public static final String UNKNOWN_DISPLAY_STRING
顯示不明資源的字串
mFastbootEnabled
protected boolean mFastbootEnabled
公用建構函式
公用方法
addAvailableDevice
public void addAvailableDevice (IDevice stubDevice)
參數 | |
---|---|
stubDevice |
IDevice |
addAvailableNativeDevice
public void addAvailableNativeDevice (IDevice stubDevice)
參數 | |
---|---|
stubDevice |
IDevice |
addFastbootDevice
public void addFastbootDevice (DeviceManager.FastbootDevice fastbootDevice)
參數 | |
---|---|
fastbootDevice |
DeviceManager.FastbootDevice |
addFastbootListener
public void addFastbootListener (IDeviceManager.IFastbootListener listener)
通知管理員,監聽器對 fastboot 狀態變更感興趣。
目前,只有在有一個或多個有效的事件監聽器時,IDeviceManager
才會監控 fastboot 中的裝置。
TODO:這是一種比較粗糙的解決方法,請找出更好的解決方法
addMonitoringTcpFastbootDevice
public void addMonitoringTcpFastbootDevice (String serial, String fastboot_serial)
將裝置新增至 Fastboot 監控器。Fastboot 監控器會使用「fastboot_serial」與裝置通訊。
參數 | |
---|---|
serial |
String :裝置的序號。 |
fastboot_serial |
String :裝置的快速啟動模式序號。 |
allocateDevice
public ITestDevice allocateDevice (IDeviceSelection options, boolean isTemporary)
要求測試裝置符合特定條件。
參數 | |
---|---|
options |
IDeviceSelection :裝置應符合的 IDeviceSelection 。 |
isTemporary |
boolean :是否應建立暫時的 NullDevice。 |
傳回 | |
---|---|
ITestDevice |
測試用的 ITestDevice ,或 null (如果沒有 ITestDevice ) |
allocateDevice
public ITestDevice allocateDevice (IDeviceSelection options)
要求測試裝置符合特定條件。
參數 | |
---|---|
options |
IDeviceSelection :裝置應符合的 IDeviceSelection 。 |
傳回 | |
---|---|
ITestDevice |
測試用的 ITestDevice ,如果沒有 ITestDevice ,則使用 null |
allocateDevice
public ITestDevice allocateDevice ()
要求實體裝置進行測試
傳回 | |
---|---|
ITestDevice |
測試用的 ITestDevice ,或 null (如果沒有 ITestDevice ) |
connectToTcpDevice
public ITestDevice connectToTcpDevice (String ipAndPort)
使用 adb-over-tcp 連線至裝置
這個方法會分配新的裝置,最終應透過 disconnectFromTcpDevice(com.android.tradefed.device.ITestDevice)
釋放
傳回的 ITestDevice
會上線,但可能不會回應。
請注意,在 TCP 已連線的裝置上執行重新啟動等動作,會中斷裝置的 TCP 連線,並導致 DeviceNotAvailableException
參數 | |
---|---|
ipAndPort |
String :要連線的裝置原始 IP 位址和通訊埠 |
傳回 | |
---|---|
ITestDevice |
如果無法建立 TCP 連線,則為 ITestDevice 或 null |
disconnectFromTcpDevice
public boolean disconnectFromTcpDevice (ITestDevice tcpDevice)
中斷與 ADB-over-TCP 連線裝置的連線。
將裝置切換回 USB 模式,並釋放裝置。
參數 | |
---|---|
tcpDevice |
ITestDevice :目前處於 TCP 模式的裝置,先前透過 connectToTcpDevice(String) 分配 |
傳回 | |
---|---|
boolean |
true 切換至 USB 模式是否成功 |
displayDevicesInfo
public void displayDevicesInfo (PrintWriter stream, boolean includeStub)
輸出使用者友善的說明,其中包含已知裝置清單、裝置狀態,以及常用 IDeviceSelection
選項的值。
參數 | |
---|---|
stream |
PrintWriter :輸出說明的 ERROR(/PrintWriter) |
includeStub |
boolean :是否要顯示虛設裝置。 |
executeCmdOnAvailableDevice
public CommandResult executeCmdOnAvailableDevice (String serial, String command, long timeout, TimeUnit timeUnit)
在可用的裝置上執行殼層指令的輔助方法。
參數 | |
---|---|
serial |
String :裝置序號。 |
command |
String :Shell 指令。 |
timeout |
long :指令完成的時間長度。 |
timeUnit |
TimeUnit :逾時時間的單位。 |
executeGlobalAdbCommand
public String executeGlobalAdbCommand (String... cmdArgs)
執行未鎖定特定裝置的 ADB 指令,例如'adb connect'
傳回 | |
---|---|
String |
如果指令成功,則傳回 std 輸出內容,否則傳回空值。 |
forceAllocateDevice
public ITestDevice forceAllocateDevice (String serial)
粗魯地分配裝置,即使該裝置目前無法使用也一樣。
如果裝置已分配,這項設定就不會產生任何影響。
參數 | |
---|---|
serial |
String :要分配的裝置序號 |
傳回 | |
---|---|
ITestDevice |
ITestDevice ,如果無法分配則為 null |
freeDevice
public void freeDevice (ITestDevice device, FreeDeviceState deviceState)
將裝置退回裝置池
如果嘗試退回先前未分配的裝置,系統會忽略該裝置。
參數 | |
---|---|
device |
ITestDevice :要免費的 ITestDevice |
deviceState |
FreeDeviceState :FreeDeviceState 。用於控管裝置是否會歸還至可用裝置資源池。 |
getAdbPath
public String getAdbPath ()
傳回要使用的 ADB 二進位檔路徑。
傳回 | |
---|---|
String |
getAdbVersion
public String getAdbVersion ()
取得裝置管理員目前使用的 ADB 版本。
傳回 | |
---|---|
String |
getDeviceDescriptor
public DeviceDescriptor getDeviceDescriptor (String serial)
傳回具有指定序號的 DeviceDescriptor。
參數 | |
---|---|
serial |
String :裝置要取得的序號 |
傳回 | |
---|---|
DeviceDescriptor |
所選裝置的 DeviceDescriptor ,如果序號不符已知裝置,則為空值。 |
getFastbootPath
public String getFastbootPath ()
傳回要使用的 fastboot 二進位檔路徑。
傳回 | |
---|---|
String |
init
public void init (IDeviceSelection globalDeviceFilter,globalDeviceMonitors, IManagedTestDeviceFactory deviceFactory)
初始化裝置管理工具。在呼叫任何其他方法之前,必須呼叫這個方法一次,且只能呼叫一次。
參數 | |
---|---|
globalDeviceFilter |
IDeviceSelection |
globalDeviceMonitors |
|
deviceFactory |
IManagedTestDeviceFactory |
init
public void init (IDeviceSelection globalDeviceFilter,globalDeviceMonitors)
初始化裝置管理工具。在呼叫任何其他方法之前,必須呼叫這個方法一次,且只能呼叫一次。
參數 | |
---|---|
globalDeviceFilter |
IDeviceSelection :裝置篩選器 |
globalDeviceMonitors |
|
init
public void init ()
初始化裝置管理工具。在呼叫任何其他方法之前,必須呼叫這個方法一次,且只能呼叫一次。
isEmulator
public boolean isEmulator (String serial)
判斷指定序號是否代表模擬器
參數 | |
---|---|
serial |
String |
傳回 | |
---|---|
boolean |
isFileSystemMountCheckEnabled
public boolean isFileSystemMountCheckEnabled ()
傳回是否應在 NativeDeviceStateMonitor
中檢查檔案系統是否正確掛載。
傳回 | |
---|---|
boolean |
isNullDevice
public boolean isNullDevice (String serial)
判斷指定序列是否代表空值裝置
參數 | |
---|---|
serial |
String |
傳回 | |
---|---|
boolean |
killEmulator
public void killEmulator (ITestDevice device)
關閉指定的模擬器。
直到 ADB 中沒有模擬器為止。如果模擬器已無法使用,這個指令就不會產生任何影響。
參數 | |
---|---|
device |
ITestDevice :代表要關閉的模擬器的 ITestDevice |
launchEmulator
public void launchEmulator (ITestDevice device, long bootTimeout, IRunUtil runUtil,emulatorArgs)
用於啟動模擬器的輔助方法。
會根據呼叫端指定的方式啟動模擬器
參數 | |
---|---|
device |
ITestDevice :代表已指派模擬器裝置的預留位置 ITestDevice |
bootTimeout |
long :等待模擬器啟動所需的時間 (以毫秒為單位) |
emulatorArgs |
:用於啟動模擬器的指令列引數 |
listAllDevices
publiclistAllDevices (boolean shortDescriptor)
傳回所有已知裝置的 DeviceDescriptor 清單
參數 | |
---|---|
shortDescriptor |
boolean :是否將描述符限制為最少資訊 |
傳回 | |
---|---|
|
所有已知裝置的 DeviceDescriptor 清單 |
listAllDevices
publiclistAllDevices ()
傳回所有已知裝置的 DeviceDescriptor 清單
傳回 | |
---|---|
|
所有已知裝置的 DeviceDescriptor 清單 |
reconnectDeviceToTcp
public ITestDevice reconnectDeviceToTcp (ITestDevice usbDevice)
輔助方法,可將指定的 USB 裝置切換至 ADB-over-TCP 模式,然後透過 connectToTcpDevice(String)
連線。
參數 | |
---|---|
usbDevice |
ITestDevice :裝置目前處於 USB 模式 |
傳回 | |
---|---|
ITestDevice |
在 TCP 模式下新分配的 ITestDevice ,或在無法建立 TCP 連線時的 null |
removeDeviceMonitor
public void removeDeviceMonitor (IDeviceMonitor mon)
移除先前新增的 IDeviceMonitor
。如果未新增 mon,這個指令就不會產生任何作用。
參數 | |
---|---|
mon |
IDeviceMonitor |
removeFastbootListener
public void removeFastbootListener (IDeviceManager.IFastbootListener listener)
通知管理員,監聽器不再關心快速啟動狀態變更。
stopAdbBridge
public void stopAdbBridge ()
停止 ADB 橋接,並讓服務依賴 ADB 連線。
終止
public void terminate ()
停止裝置監控服務,並終止 ddm 程式庫。
必須在應用程式終止時呼叫。
terminateDeviceMonitor
public void terminateDeviceMonitor ()
停止裝置監控器。
terminateDeviceRecovery
public void terminateDeviceRecovery ()
停止裝置復原執行緒。
terminateHard
public void terminateHard (String reason)
例如 terminateHard()
。
參數 | |
---|---|
reason |
String :提供終止服務的選填原因。 |
waitForFirstDeviceAdded
public boolean waitForFirstDeviceAdded (long timeout)
等待第一個實體裝置連線。如果裝置先前已連線,則會直接傳回 True。如果未新增裝置,則在逾時後會傳回 false。
參數 | |
---|---|
timeout |
long :傳回 false 前等待的時間 (以毫秒為單位)。 |
傳回 | |
---|---|
boolean |