AndroidDebugBridge
public
class
AndroidDebugBridge
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.AndroidDebugBridge |
連線至主機端的 Android Debug Bridge (ADB)
這是與任何裝置、模擬器或在這些裝置上執行的應用程式通訊的中心點。
init(boolean) 必須在執行任何動作前呼叫。
摘要
巢狀類別 | |
|---|---|
interface |
AndroidDebugBridge.IClientChangeListener
實作這個介面的類別會提供處理 |
interface |
AndroidDebugBridge.IDebugBridgeChangeListener
實作這個介面的類別提供處理 |
interface |
AndroidDebugBridge.IDeviceChangeListener
實作這個介面的類別會提供處理 |
常數 | |
|---|---|
int |
DEFAULT_START_ADB_TIMEOUT_MILLIS
啟動 ADB 伺服器時使用的預設逾時 |
欄位 | |
|---|---|
public
static
final
AdbVersion |
MIN_ADB_VERSION
支援的 adb 最低和最高版本。 |
公用方法 | |
|---|---|
static
void
|
addClientChangeListener(AndroidDebugBridge.IClientChangeListener listener)
將監聽器新增至監聽器集合,當 |
static
void
|
addDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)
將監聽器新增至監聽器集合,當新的 |
static
void
|
addDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)
將事件監聽器新增至事件監聽器集合,當 |
static
void
|
clientChanged(ClientImpl client, int changeMask)
通知接聽程式已修改 |
static
AndroidDebugBridge
|
createBridge(long timeout, TimeUnit unit)
建立未連結至任何特定可執行檔的 |
static
AndroidDebugBridge
|
createBridge(String osLocation, boolean forceNewBridge)
這個方法已淘汰。
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 |
static
AndroidDebugBridge
|
createBridge()
這個方法已淘汰。
如果 ADB 沒有回應,這個方法可能會停止運作。請改用 |
static
AndroidDebugBridge
|
createBridge(String osLocation, boolean forceNewBridge, long timeout, TimeUnit unit)
從指令列工具的位置建立新的偵錯橋接器。 |
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()
傳回目前的偵錯橋接器。 |
static
boolean
|
getClientSupport()
傳回 ddmlib 是否已設定為支援監控及與在 |
int
|
getConnectionAttemptCount()
Returns the number of times the |
static
int
|
getDebugBridgeChangeListenerCount()
|
static
int
|
getDeviceChangeListenerCount()
|
IDevice[]
|
getDevices()
傳回裝置。 |
ListenableFuture<
|
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()
傳回橋接器是否已在建立後從 adb 取得初始清單。 |
static
void
|
init(AdbInitOptions options)
與 |
static
void
|
init(boolean clientSupport)
初始化 |
static
void
|
init(boolean clientSupport, boolean useLibusb,
與 |
static
void
|
initIfNeeded(boolean clientSupport)
僅在必要時初始化程式庫;已淘汰非測試用途。 |
boolean
|
isConnected()
傳回 |
static
boolean
|
isUserManagedAdbMode()
|
static
SocketChannel
|
openConnection()
嘗試連線至本機 Android Debug Bridge 伺服器。 |
static
void
|
removeClientChangeListener(AndroidDebugBridge.IClientChangeListener listener)
從監聽器集合中移除監聽器,當 |
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
公用方法
addClientChangeListener
public static void addClientChangeListener (AndroidDebugBridge.IClientChangeListener listener)
將監聽器新增至監聽器集合,當 ClientImpl 屬性變更時,系統會傳送 IClientChangeListener 介面中定義的其中一則訊息,通知這些監聽器。
| 參數 | |
|---|---|
listener |
AndroidDebugBridge.IClientChangeListener:應收到通知的接聽器。 |
addDebugBridgeChangeListener
public static void addDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)
將監聽器新增至監聽器集合,當新的 AndroidDebugBridge 連線時,系統會傳送 IDebugBridgeChangeListener 介面中定義的其中一則訊息,通知這些監聽器。
| 參數 | |
|---|---|
listener |
AndroidDebugBridge.IDebugBridgeChangeListener:應收到通知的接聽器。 |
addDeviceChangeListener
public static void addDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)
將事件監聽器新增至事件監聽器集合,當 IDevice 連線、中斷連線,或其屬性或 ClientImpl 清單變更時,系統會透過 IDeviceChangeListener 介面中定義的其中一則訊息通知事件監聽器。
| 參數 | |
|---|---|
listener |
AndroidDebugBridge.IDeviceChangeListener:應收到通知的接聽器。 |
clientChanged
public static void clientChanged (ClientImpl client, int changeMask)
通知接聽程式已修改 ClientImpl。
系統會在同步區塊中通知接聽者。請務必預期接聽程式可能會存取各種方法,以及使用內部鎖定。IDevicegetDevices()
| 參數 | |
|---|---|
client |
ClientImpl:修改後的 Client。 |
changeMask |
int:指出 Client 中變更內容的遮罩 |
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 |
已連線的橋接器,或是在建立/連線至橋接器時發生錯誤,則為空值 |
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 |
已連線的橋接器,或是在建立/連線至橋接器時發生錯誤,則為空值 |
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 |
|
getClientSupport
public static boolean getClientSupport ()
傳回 ddmlib 是否已設定為支援監控及與在 ClientImpl 上執行的 IDevice 互動。
| 傳回 | |
|---|---|
boolean |
|
getConnectionAttemptCount
public int getConnectionAttemptCount ()
傳回 AndroidDebugBridge 物件嘗試連線至 adb 精靈的次數。
| 傳回 | |
|---|---|
int |
|
getDebugBridgeChangeListenerCount
public static int getDebugBridgeChangeListenerCount ()
| 傳回 | |
|---|---|
int |
|
getDeviceChangeListenerCount
public static int getDeviceChangeListenerCount ()
| 傳回 | |
|---|---|
int |
|
getRawDeviceList
public ListenableFuture<> getRawDeviceList ()
傳回 adb 指令列回報的裝置集。這項功能主要適用於連線小幫手或其他診斷工具,這些工具需要透過其他管道驗證 getDevices() 清單的狀態。如果程式碼只需要存取裝置清單,請改為呼叫 getDevices()。
| 傳回 | |
|---|---|
ListenableFuture< |
|
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(boolean) 類似,但可傳遞一組自訂的環境變數。
| 參數 | |
|---|---|
options |
AdbInitOptions |
init
public static void init (boolean clientSupport)
初始化 ddm 程式庫。
您必須在呼叫 createBridge(String, boolean) 之前先呼叫這個方法一次。
ddmlib 的偏好設定也應使用從預設值變更的預設值初始化。
應用程式結束時,應呼叫 terminate()。
| 參數 | |
|---|---|
clientSupport |
boolean:指出程式庫是否應啟用監控功能,以及與裝置上執行的應用程式互動。 |
init
public static void init (boolean clientSupport,
boolean useLibusb,
env) 與 init(boolean) 類似,可啟用 libusb 並傳遞一組自訂的環境變數。
| 參數 | |
|---|---|
clientSupport |
boolean |
useLibusb |
boolean |
env |
|
initIfNeeded
public static void initIfNeeded (boolean clientSupport)
僅在需要時初始化程式庫;已淘汰非測試用途。
| 參數 | |
|---|---|
clientSupport |
boolean:指出程式庫是否應啟用監控功能,以及與裝置上執行的應用程式互動。 |
另請參閱:
isUserManagedAdbMode
public static boolean isUserManagedAdbMode ()
| 傳回 | |
|---|---|
boolean |
如果是在使用者管理的 ADB 模式下運作,ddmlib 不會也不應管理 ADB 伺服器。 |
openConnection
public static SocketChannel openConnection ()
嘗試連線至本機 Android Debug Bridge 伺服器。
| 傳回 | |
|---|---|
SocketChannel |
成功時為已連線的通訊端 |
| 擲回 | |
|---|---|
|
開啟連線時發生錯誤 |
removeClientChangeListener
public static void removeClientChangeListener (AndroidDebugBridge.IClientChangeListener listener)
從監聽器集合中移除監聽器,當 ClientImpl 屬性變更時,系統會通知這些監聽器。
| 參數 | |
|---|---|
listener |
AndroidDebugBridge.IClientChangeListener:不再需要通知的接聽器。 |
removeDebugBridgeChangeListener
public static void removeDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)
從監聽器集合中移除監聽器,當新的 AndroidDebugBridge 啟動時,系統會通知這些監聽器。
| 參數 | |
|---|---|
listener |
AndroidDebugBridge.IDebugBridgeChangeListener:不再需要通知的接聽器。 |
removeDeviceChangeListener
public static void removeDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)
從監聽器集合中移除監聽器,當 IDevice 連線、中斷連線,或其屬性或 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 程式庫。應用程式終止時必須呼叫這個方法。