AndroidDebugBridge

public class AndroidDebugBridge
extends Object

java.lang.Object
   ↳ com.android.tradefed.device.server.AndroidDebugBridge


連線至主機端的 Android Debug Bridge (ADB)

這是與任何裝置、模擬器或在這些裝置上執行的應用程式通訊的中心點。

init(boolean) 必須在執行任何動作前呼叫。

摘要

巢狀類別

interface AndroidDebugBridge.IClientChangeListener

實作這個介面的類別會提供處理 ClientImpl 變更的方法。 

interface AndroidDebugBridge.IDebugBridgeChangeListener

實作這個介面的類別提供處理 AndroidDebugBridge 變更 (包括重新啟動) 的方法。 

interface AndroidDebugBridge.IDeviceChangeListener

實作這個介面的類別會提供處理 IDevice 新增、刪除和變更作業的方法。 

常數

int DEFAULT_START_ADB_TIMEOUT_MILLIS

啟動 ADB 伺服器時使用的預設逾時

欄位

public static final AdbVersion MIN_ADB_VERSION

支援的 adb 最低和最高版本。

公用方法

static void addClientChangeListener(AndroidDebugBridge.IClientChangeListener listener)

將監聽器新增至監聽器集合,當 ClientImpl 屬性變更時,系統會傳送 IClientChangeListener 介面中定義的其中一則訊息,通知監聽器。

static void addDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)

將監聽器新增至監聽器集合,當新的 AndroidDebugBridge 連線時,系統會傳送 IDebugBridgeChangeListener 介面中定義的其中一則訊息,通知監聽器。

static void addDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)

將事件監聽器新增至事件監聽器集合,當 IDevice 連線、中斷連線,或其屬性或 ClientImpl 清單變更時,系統會透過 IDeviceChangeListener 介面中定義的其中一則訊息通知事件監聽器。

static void clientChanged(ClientImpl client, int changeMask)

通知接聽程式已修改 ClientImpl

static AndroidDebugBridge createBridge(long timeout, TimeUnit unit)

建立未連結至任何特定可執行檔的 AndroidDebugBridge

static AndroidDebugBridge createBridge(String osLocation, boolean forceNewBridge)

這個方法已淘汰。 如果 ADB 沒有回應,這個方法可能會停止運作。請改用 createBridge(String, boolean, long, TimeUnit)

static AndroidDebugBridge createBridge()

這個方法已淘汰。 如果 ADB 沒有回應,這個方法可能會停止運作。請改用 createBridge(long, TimeUnit)

static AndroidDebugBridge createBridge(String osLocation, boolean forceNewBridge, long timeout, TimeUnit unit)

從指令列工具的位置建立新的偵錯橋接器。

static void deviceChanged(IDevice device, int changeMask)

通知接聽程式已修改 IDevice

static void deviceConnected(IDevice device)

通知接聽者有新的 IDevice

static void deviceDisconnected(IDevice device)

通知接聽者已中斷連線。IDevice

static void disableFakeAdbServerMode()
static void disconnectBridge()

這個方法已淘汰。 如果 ADB 沒有回應,這個方法可能會停止運作。請改用 disconnectBridge(long, TimeUnit)

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 是否已設定為支援監控及與在 IDevice 上執行的 ClientImpl 互動。

int getConnectionAttemptCount()

Returns the number of times the AndroidDebugBridge object attempted to connect to the adb daemon.

static int getDebugBridgeChangeListenerCount()
static int getDeviceChangeListenerCount()
IDevice[] getDevices()

傳回裝置。

ListenableFuture<> getRawDeviceList()

傳回 adb 指令列回報的裝置集。

int getRestartAttemptCount()

傳回 AndroidDebugBridge 物件嘗試重新啟動 adb 精靈的次數。

static InetSocketAddress getSocketAddress()

這個方法已淘汰。 這個方法會傳回迴路伺服器位址,可能與 ADB 伺服器使用的位址不符。也就是說,JVM 可能處於 IPv4 模式,而 ADB 伺服器則託管在 IPv6 迴路位址上。開啟與 ADB 伺服器的連線時,請改用 openConnection()

static ListenableFuture<String> getVirtualDeviceId(ListeningExecutorService service, File adb, IDevice device)
boolean hasInitialDeviceList()

傳回橋接器是否已在建立後從 adb 取得初始清單。

static void init(AdbInitOptions options)

init(boolean) 類似,但可傳遞自訂的 env 集合。

static void init(boolean clientSupport)

初始化 ddm 程式庫。

static void init(boolean clientSupport, boolean useLibusb, env)

init(boolean) 類似,但可啟用 libusb 並傳遞一組自訂的環境變數。

static void initIfNeeded(boolean clientSupport)

僅在必要時初始化程式庫;已淘汰非測試用途。

boolean isConnected()

傳回 AndroidDebugBridge 物件是否仍連線至 adb 精靈。

static boolean isUserManagedAdbMode()
static SocketChannel openConnection()

嘗試連線至本機 Android Debug Bridge 伺服器。

static void removeClientChangeListener(AndroidDebugBridge.IClientChangeListener listener)

從監聽器集合中移除監聽器,當 ClientImpl 屬性變更時,系統會通知這些監聽器。

static void removeDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)

從監聽器集合中移除監聽器,當新的 AndroidDebugBridge 啟動時,系統會通知監聽器。

static void removeDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)

從監聽器集合中移除監聽器,當 IDevice 連線、中斷連線,或其屬性或 ClientImpl 清單變更時,系統會通知這些監聽器。

boolean restart(long timeout, TimeUnit unit)

重新啟動 adb,但不會重新啟動周邊服務。

boolean restart()

這個方法已淘汰。 如果 ADB 沒有回應,這個方法可能會停止運作。請改用 restart(long, TimeUnit)

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 TimeUnittimeout 引數的時間單位

傳回
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

getDevices

public IDevice[] getDevices ()

退還裝置。

傳回
IDevice[]

另請參閱:

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:指出程式庫是否應啟用監控功能,以及與裝置上執行的應用程式互動。

另請參閱:

isConnected

public boolean isConnected ()

傳回 AndroidDebugBridge 物件是否仍連線至 adb 精靈。

傳回
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 程式庫。應用程式終止時必須呼叫這個方法。