AndroidDebugBridge
public
class
AndroidDebugBridge
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.AndroidDebugBridge |
連線至主機端的 Android Debug Bridge (ADB)
這是與任何裝置、模擬器或在這些裝置/模擬器上執行的應用程式通訊的中心點。
init() 必須在執行任何動作前呼叫。
摘要
巢狀類別 | |
|---|---|
interface |
AndroidDebugBridge.IDebugBridgeChangeListener
實作這個介面的類別提供處理 |
interface |
AndroidDebugBridge.IDeviceChangeListener
實作這個介面的類別會提供處理 |
常數 | |
|---|---|
int |
DEFAULT_START_ADB_TIMEOUT_MILLIS
啟動 ADB 伺服器時使用的預設逾時 |
欄位 | |
|---|---|
public
static
final
AdbVersion |
MIN_ADB_VERSION
支援的 adb 最低和最高版本。 |
公用方法 | |
|---|---|
static
void
|
addDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)
將監聽器新增至監聽器集合,當新的 |
static
void
|
addDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)
將事件監聽器新增至事件監聽器集合,當 |
static
AndroidDebugBridge
|
createBridge(String osLocation, boolean forceNewBridge, long timeout, TimeUnit unit)
從指令列工具的位置建立新的偵錯橋接器。 |
static
AndroidDebugBridge
|
createBridge(long timeout, TimeUnit unit)
建立未連結至任何特定可執行檔的 |
static
AndroidDebugBridge
|
createBridge(String osLocation, boolean forceNewBridge)
這個方法已淘汰,
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 |
static
AndroidDebugBridge
|
createBridge()
這個方法已淘汰,
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 |
static
void
|
deviceChanged(IDevice device, int changeMask)
通知接聽程式已修改 |
static
void
|
deviceConnected(IDevice device)
通知接聽程式有新的 |
static
void
|
deviceDisconnected(IDevice device)
通知接聽者已中斷 |
static
void
|
disableFakeAdbServerMode()
|
static
void
|
disconnectBridge()
這個方法已淘汰,
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 |
static
boolean
|
disconnectBridge(long timeout, TimeUnit unit)
中斷目前的偵錯橋接器,並銷毀物件。 |
static
void
|
enableFakeAdbServerMode(int port)
|
static
ListenableFuture<AdbVersion>
|
getAdbVersion(File adb)
|
static
AndroidDebugBridge
|
getBridge()
傳回目前的偵錯橋接器。 |
int
|
getConnectionAttemptCount()
傳回 |
static
int
|
getDebugBridgeChangeListenerCount()
|
static
int
|
getDeviceChangeListenerCount()
|
IDevice[]
|
getDevices()
傳回裝置。 |
ListenableFuture<List<AdbDevice>>
|
getRawDeviceList()
傳回 adb 指令列回報的裝置集。 |
int
|
getRestartAttemptCount()
傳回 |
static
InetSocketAddress
|
getSocketAddress()
這個方法已淘汰,
這個方法會傳回回送伺服器位址,可能與 ADB 伺服器使用的位址不符。也就是說,JVM 可能處於 IPv4 模式,而 ADB 伺服器則託管在 IPv6 回送位址上。開啟與 ADB 伺服器的連線時,請改用 |
static
ListenableFuture<String>
|
getVirtualDeviceId(ListeningExecutorService service, File adb, IDevice device)
|
boolean
|
hasInitialDeviceList()
Returns whether the bridge has acquired the initial list from adb after being created. |
static
void
|
init(AdbInitOptions options)
與 |
static
void
|
init(boolean useLibusb, Map<String, String> env)
與 |
static
void
|
init()
初始化 |
static
void
|
initIfNeeded()
僅在需要時初始化程式庫;非測試用途已淘汰。 |
boolean
|
isConnected()
傳回 |
static
boolean
|
isUserManagedAdbMode()
|
static
SocketChannel
|
openConnection()
嘗試連線至本機 Android Debug Bridge 伺服器。 |
static
void
|
removeDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)
從監聽器集合中移除監聽器,當新的 |
static
void
|
removeDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)
從監聽器集合中移除監聽器,當 |
boolean
|
restart(long timeout, TimeUnit unit)
重新啟動 adb,但不會重新啟動周邊服務。 |
boolean
|
restart()
這個方法已淘汰,
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 |
boolean
|
startAdb(long timeout, TimeUnit unit)
啟動 adb 主機端伺服器。 |
static
void
|
terminate()
終止 ddm 程式庫。 |
常數
DEFAULT_START_ADB_TIMEOUT_MILLIS
public static final int DEFAULT_START_ADB_TIMEOUT_MILLIS
啟動 ADB 伺服器時使用的預設逾時
常數值: 20000 (0x00004e20)
欄位
MIN_ADB_VERSION
public static final AdbVersion MIN_ADB_VERSION
支援的 adb 最低和最高版本。這對應於 //device/tools/adb/adb.h 中的 ADB_SERVER_VERSION
公用方法
addDebugBridgeChangeListener
public static void addDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)
將監聽器新增至監聽器集合,當新的 AndroidDebugBridge 連線時,系統會傳送 IDebugBridgeChangeListener 介面中定義的其中一則訊息,通知這些監聽器。
| 參數 | |
|---|---|
listener |
AndroidDebugBridge.IDebugBridgeChangeListener:應收到通知的接聽器。 |
addDeviceChangeListener
public static void addDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)
將監聽器新增至監聽器集合,當 IDevice 連線、中斷連線,或其屬性或 ERROR(/ClientImpl) 清單變更時,系統會透過 IDeviceChangeListener 介面中定義的其中一則訊息通知監聽器。
| 參數 | |
|---|---|
listener |
AndroidDebugBridge.IDeviceChangeListener:應收到通知的接聽器。 |
createBridge
public static AndroidDebugBridge createBridge (String osLocation, boolean forceNewBridge, long timeout, TimeUnit unit)
從指令列工具的位置建立新的偵錯橋接器。
除非位置相同且
forceNewBridge 設為 false,否則系統會中斷所有現有伺服器的連線。
| 參數 | |
|---|---|
osLocation |
String:指令列工具「adb」的位置 |
forceNewBridge |
boolean:即使已存在位置相同的網橋,仍強制建立新網橋。 |
timeout |
long:等待時間上限 |
unit |
TimeUnit:timeout 引數的時間單位 |
| 傳回 | |
|---|---|
AndroidDebugBridge |
已連線的橋接器,或是在建立/連線至橋接器時發生錯誤,則為空值 |
createBridge
public static AndroidDebugBridge createBridge (long timeout, TimeUnit unit)
建立未連結至任何特定可執行檔的 AndroidDebugBridge。
這個橋接器會預期 adb 正在執行。無法啟動/停止/重新啟動 adb。
如果橋接程序已啟動,系統會直接傳回,不會進行任何變更 (類似於呼叫 getBridge())。
| 參數 | |
|---|---|
timeout |
long |
unit |
TimeUnit |
| 傳回 | |
|---|---|
AndroidDebugBridge |
已連線的橋接器,或是在建立/連線至橋接器時發生錯誤,則為空值 |
createBridge
public static AndroidDebugBridge createBridge (String osLocation, boolean forceNewBridge)
這個方法已淘汰。
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 createBridge(String,boolean,long,TimeUnit)。
從指令列工具的位置建立新的偵錯橋接器。
除非位置相同且
forceNewBridge 設為 false,否則系統會中斷所有現有伺服器的連線。
| 參數 | |
|---|---|
osLocation |
String:指令列工具「adb」的位置 |
forceNewBridge |
boolean:即使已存在位置相同的網橋,仍強制建立新網橋。 |
| 傳回 | |
|---|---|
AndroidDebugBridge |
已連線的橋接器,或是在建立/連線至橋接器時發生錯誤,則為空值 |
createBridge
public static AndroidDebugBridge createBridge ()
這個方法已淘汰。
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 createBridge(long,TimeUnit)。
建立未連結至任何特定可執行檔的 AndroidDebugBridge。
這個橋接器會預期 adb 正在執行。無法啟動/停止/重新啟動 adb。
如果橋接程序已啟動,系統會直接傳回,不會進行任何變更 (類似於呼叫 getBridge())。
| 傳回 | |
|---|---|
AndroidDebugBridge |
已連線的橋接器,或是在建立/連線至橋接器時發生錯誤,則為空值 |
deviceChanged
public static void deviceChanged (IDevice device, int changeMask)
通知接聽程式已修改 IDevice。
系統會在同步區塊中通知接聽者。請務必預期接聽程式可能會存取各種方法,以及使用內部鎖定的方法。IDevicegetDevices()
| 參數 | |
|---|---|
device |
IDevice:修改後的 IDevice。 |
changeMask |
int |
deviceConnected
public static void deviceConnected (IDevice device)
通知接聽程式有新的 IDevice。
系統會在同步區塊中通知接聽者。請務必預期接聽程式可能會存取各種方法,以及使用內部鎖定的方法。IDevicegetDevices()
| 參數 | |
|---|---|
device |
IDevice:新的 IDevice。 |
deviceDisconnected
public static void deviceDisconnected (IDevice device)
通知接聽程式已中斷連線的 IDevice。
系統會在同步區塊中通知接聽者。請務必預期接聽程式可能會存取各種方法,以及使用內部鎖定的方法。IDevicegetDevices()
| 參數 | |
|---|---|
device |
IDevice:已中斷連線的 IDevice。 |
disableFakeAdbServerMode
public static void disableFakeAdbServerMode ()
disconnectBridge
public static void disconnectBridge ()
這個方法已淘汰。
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 disconnectBridge(long,TimeUnit)。
中斷目前的偵錯橋接器,並銷毀物件。您必須使用 createBridge(String,boolean) 建立新物件。
這也會停止目前的 adb 主機伺服器。
disconnectBridge
public static boolean disconnectBridge (long timeout,
TimeUnit unit)中斷目前的偵錯橋接器,並銷毀物件。您必須使用 createBridge(String,boolean) 建立新物件。
這也會停止目前的 adb 主機伺服器。
| 參數 | |
|---|---|
timeout |
long |
unit |
TimeUnit |
| 傳回 | |
|---|---|
boolean |
true (如果方法在指定逾時時間內成功)。 |
enableFakeAdbServerMode
public static void enableFakeAdbServerMode (int port)
| 參數 | |
|---|---|
port |
int |
getAdbVersion
public static ListenableFuture<AdbVersion> getAdbVersion (File adb)
| 參數 | |
|---|---|
adb |
File |
| 傳回 | |
|---|---|
ListenableFuture<AdbVersion> |
|
getBridge
public static AndroidDebugBridge getBridge ()
傳回目前的偵錯橋接器。如果沒有建立任何項目,則為 null。
| 傳回 | |
|---|---|
AndroidDebugBridge |
|
getConnectionAttemptCount
public int getConnectionAttemptCount ()
傳回 AndroidDebugBridge 物件嘗試連線至 ADB Daemon 的次數。
| 傳回 | |
|---|---|
int |
|
getDebugBridgeChangeListenerCount
public static int getDebugBridgeChangeListenerCount ()
| 傳回 | |
|---|---|
int |
|
getDeviceChangeListenerCount
public static int getDeviceChangeListenerCount ()
| 傳回 | |
|---|---|
int |
|
getRawDeviceList
public ListenableFuture<List<AdbDevice>> getRawDeviceList ()
傳回 adb 指令列回報的裝置集。這項功能主要適用於連線小幫手或其他診斷工具,這些工具需要透過其他管道驗證 getDevices() 清單的狀態。如果程式碼只需要存取裝置清單,應改為呼叫 getDevices()。
| 傳回 | |
|---|---|
ListenableFuture<List<AdbDevice>> |
|
getRestartAttemptCount
public int getRestartAttemptCount ()
傳回 AndroidDebugBridge 物件嘗試重新啟動 adb daemon 的次數。
| 傳回 | |
|---|---|
int |
|
getSocketAddress
public static InetSocketAddress getSocketAddress ()
這個方法已淘汰。
這個方法會傳回迴路伺服器位址,可能與 ADB 伺服器使用的位址不符。也就是說,JVM 可能處於 IPv4 模式,而 ADB 伺服器則託管在 IPv6 迴路位址上。開啟與 ADB 伺服器的連線時,請改用 openConnection()。
傳回主機上 ADB 伺服器的通訊端位址。
這個方法會嘗試開啟連至 ADB 伺服器的通訊端通道,藉此傳回已知可運作的通訊端位址。系統會嘗試 IPv4 和 IPv6 迴路位址。如果兩者都無法連線,這個方法會改為傳回 JVM 偏好的迴路位址。您必須使用這項備援邏輯,以免 API 發生中斷。
如果啟用虛擬 ADB 伺服器模式,這個方法會自動回復為舊版實作項目,不會嘗試連線至 ADB。
| 傳回 | |
|---|---|
InetSocketAddress |
|
getVirtualDeviceId
public static ListenableFuture<String> getVirtualDeviceId (ListeningExecutorService service,
File adb,
IDevice device)| 參數 | |
|---|---|
service |
ListeningExecutorService |
adb |
File |
device |
IDevice |
| 傳回 | |
|---|---|
ListenableFuture<String> |
|
hasInitialDeviceList
public boolean hasInitialDeviceList ()
傳回橋接器是否已在建立後從 adb 取得初始清單。
在 createBridge(String,boolean) 之後立即呼叫 getDevices(),通常會產生空白清單。這是因為 adb 的內部非同步通訊機制無法保證在呼叫 getDevices() 之前已建構 IDevice 清單。
建議您建立 IDeviceChangeListener 物件,藉此取得 IDevice 物件清單。
| 傳回 | |
|---|---|
boolean |
|
init
public static void init (AdbInitOptions options)
與 init() 類似,但可傳遞一組自訂的環境變數。
| 參數 | |
|---|---|
options |
AdbInitOptions |
init
public static void init (boolean useLibusb,
Map<String, String> env)與 init() 類似,但可啟用 libusb 並傳遞一組自訂的環境變數。BigQuery ML 會為您預先處理部分作業
例如為類別變數加上 one-hot 編碼
| 參數 | |
|---|---|
useLibusb |
boolean |
env |
Map |
init
public static void init ()
初始化 ddm 程式庫。
您必須在呼叫 createBridge(String,boolean) 之前呼叫這個方法一次。
ddmlib 的偏好設定也應使用從預設值變更的預設值初始化。
應用程式結束時,應呼叫 terminate()。
isUserManagedAdbMode
public static boolean isUserManagedAdbMode ()
| 傳回 | |
|---|---|
boolean |
如果是在使用者管理的 ADB 模式下運作,ddmlib 不會也不應管理 ADB 伺服器。 |
openConnection
public static SocketChannel openConnection ()
嘗試連線至本機 Android Debug Bridge 伺服器。
| 傳回 | |
|---|---|
SocketChannel |
成功時為已連線的通訊端 |
| 擲回 | |
|---|---|
IOException |
開啟連線時發生錯誤 |
removeDebugBridgeChangeListener
public static void removeDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)
從監聽器集合中移除監聽器,當新的 AndroidDebugBridge 啟動時,系統會通知這些監聽器。
| 參數 | |
|---|---|
listener |
AndroidDebugBridge.IDebugBridgeChangeListener:不再需要通知的接聽器。 |
removeDeviceChangeListener
public static void removeDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)
從監聽器集合中移除監聽器,當 IDevice 連線、中斷連線,或其屬性或 ERROR(/ClientImpl) 清單變更時,系統會通知監聽器。
| 參數 | |
|---|---|
listener |
AndroidDebugBridge.IDeviceChangeListener:不再需要通知的接聽器。 |
重新啟動
public boolean restart (long timeout,
TimeUnit unit)重新啟動 adb,但不會重新啟動周邊服務。
| 參數 | |
|---|---|
timeout |
long |
unit |
TimeUnit |
| 傳回 | |
|---|---|
boolean |
成功時為 true。 |
重新啟動
public boolean restart ()
這個方法已淘汰。
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 restart(long,TimeUnit)。
重新啟動 adb,但不會重新啟動周邊服務。
| 傳回 | |
|---|---|
boolean |
成功時為 true。 |
startAdb
public boolean startAdb (long timeout,
TimeUnit unit)啟動 adb 主機端伺服器。如果使用使用者管理的 ADB 伺服器,則不應使用這個方法,因為伺服器生命週期應由使用者管理,而非 ddmlib。
| 參數 | |
|---|---|
timeout |
long |
unit |
TimeUnit |
| 傳回 | |
|---|---|
boolean |
成功時為 true |
終止
public static void terminate ()
終止 ddm 程式庫。應用程式終止時必須呼叫這個方法。