AndroidDebugBridge
public
class
AndroidDebugBridge
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.AndroidDebugBridge |
与主机端 Android 调试桥 (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()
返回 |
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 调试桥服务器。 |
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。
监听器的通知是在同步块中完成的。请务必注意,监听器可能会访问 IDevice 的各种方法以及使用内部锁的 getDevices()。
| 参数 | |
|---|---|
client |
ClientImpl:修改后的 Client。 |
changeMask |
int:用于指示 Client 中发生的变化的掩码 |
createBridge
public static AndroidDebugBridge createBridge (long timeout, TimeUnit unit)
创建未与任何特定可执行文件相关联的 AndroidDebugBridge。
此桥接器将要求 adb 处于运行状态。它将无法启动/停止/重启 adb。
如果网桥已启动,则直接返回该网桥,而不进行任何更改(类似于调用 getBridge())。
| 参数 | |
|---|---|
timeout |
long |
unit |
TimeUnit |
| 返回 | |
|---|---|
AndroidDebugBridge |
已连接的网桥,如果在创建或连接到网桥时出现错误,则为 null |
createBridge
public static AndroidDebugBridge createBridge (String osLocation, boolean forceNewBridge)
此方法已弃用。
如果 ADB 不响应,此方法可能会挂起。请改用 createBridge(String, boolean, long, TimeUnit)。
从命令行工具的位置创建新的调试桥。
除非位置相同且
forceNewBridge 设置为 false,否则系统会断开所有现有服务器的连接。
| 参数 | |
|---|---|
osLocation |
String:命令行工具“adb”的位置 |
forceNewBridge |
boolean:强制创建新网桥,即使已存在位置相同的网桥。 |
| 返回 | |
|---|---|
AndroidDebugBridge |
已连接的网桥,如果在创建或连接到网桥时出现错误,则为 null |
createBridge
public static AndroidDebugBridge createBridge ()
此方法已弃用。
如果 ADB 不响应,此方法可能会挂起。请改用 createBridge(long, TimeUnit)。
创建未与任何特定可执行文件相关联的 AndroidDebugBridge。
此桥接器将要求 adb 处于运行状态。它将无法启动/停止/重启 adb。
如果网桥已启动,则直接返回该网桥,而不进行任何更改(类似于调用 getBridge())。
| 返回 | |
|---|---|
AndroidDebugBridge |
已连接的网桥,如果在创建或连接到网桥时出现错误,则为 null |
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 |
已连接的网桥,如果在创建或连接到网桥时出现错误,则为 null |
deviceChanged
public static void deviceChanged (IDevice device, int changeMask)
通知监听器已修改 IDevice。
监听器的通知是在同步块中完成的。请务必注意,监听器可能会访问 IDevice 的各种方法以及使用内部锁的 getDevices()。
| 参数 | |
|---|---|
device |
IDevice:修改后的 IDevice。 |
changeMask |
int |
deviceConnected
public static void deviceConnected (IDevice device)
通知监听器有新的 IDevice。
监听器的通知是在同步块中完成的。请务必注意,监听器可能会访问 IDevice 的各种方法以及使用内部锁的 getDevices()。
| 参数 | |
|---|---|
device |
IDevice:新的 IDevice。 |
deviceDisconnected
public static void deviceDisconnected (IDevice device)
通知监听器 IDevice 已断开连接。
监听器的通知是在同步块中完成的。请务必注意,监听器可能会访问 IDevice 的各种方法以及使用内部锁的 getDevices()。
| 参数 | |
|---|---|
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 是否已设置为支持监控和与在 IDevice 上运行的 ClientImpl 进行交互。
| 返回 | |
|---|---|
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 守护程序的次数。
| 返回 | |
|---|---|
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 调试桥服务器。
| 返回 | |
|---|---|
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 库。必须在应用终止时调用此方法。