AndroidDebugBridge

public class AndroidDebugBridge
extends Object

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


Подключение к отладочному мосту Android на стороне хоста (adb)

Это центральный узел для связи с любыми устройствами, эмуляторами или приложениями, работающими на них.

Перед выполнением каких-либо действий необходимо вызвать функцию init() .

Краткое содержание

Вложенные классы

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 addDebugBridgeChangeListener ( AndroidDebugBridge.IDebugBridgeChangeListener listener)

Добавляет слушатель в коллекцию слушателей, которые будут уведомлены о подключении нового AndroidDebugBridge путем отправки ему одного из сообщений, определенных в интерфейсе IDebugBridgeChangeListener .

static void addDeviceChangeListener ( AndroidDebugBridge.IDeviceChangeListener listener)

Добавляет слушатель в коллекцию слушателей, которые будут получать уведомления о подключении, отключении IDevice или об изменении его свойств или списка ERROR(/ClientImpl) путем отправки ему одного из сообщений, определенных в интерфейсе IDeviceChangeListener .

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

Создает новый отладочный мост из места расположения инструмента командной строки.

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 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 ()

Возвращает текущий отладочный мост.

int getConnectionAttemptCount ()

Возвращает количество попыток подключения объекта AndroidDebugBridge к демону adb.

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

Возвращает устройства.

ListenableFuture<List< AdbDevice >> getRawDeviceList ()

Возвращает набор устройств, указанных в командной строке adb.

int getRestartAttemptCount ()

Возвращает количество попыток перезапуска демона adb, предпринятых объектом AndroidDebugBridge .

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() , с возможностью передачи пользовательского набора переменных окружения.

static void init (boolean useLibusb, Map<String, String> env)

Аналогично функции init() , с возможностью включения libusb и передачи пользовательского набора переменных окружения.

static void init ()

Инициализирует библиотеку ddm .

static void initIfNeeded ()

Библиотека инициализируется только при необходимости; устарела для использования вне тестовых целей.

boolean isConnected ()

Возвращает значение, указывающее, подключен ли объект AndroidDebugBridge к демону adb.

static boolean isUserManagedAdbMode ()
static SocketChannel openConnection ()

Предпринимаются попытки подключения к локальному серверу отладки Android.

static void removeDebugBridgeChangeListener ( AndroidDebugBridge.IDebugBridgeChangeListener listener)

Удаляет слушателя из коллекции слушателей, которые будут уведомлены о запуске нового AndroidDebugBridge .

static void removeDeviceChangeListener ( AndroidDebugBridge.IDeviceChangeListener listener)

Удаляет слушателя из коллекции слушателей, которые будут получать уведомления о подключении, отключении IDevice или об изменении его свойств или списка ERROR(/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. Эти значения соответствуют переменной ADB_SERVER_VERSION, указанной в файле //device/tools/adb/adb.h

Общедоступные методы

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 : Слушатель, которому следует отправить уведомление.

создать мост

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, если при создании моста или подключении к нему возникли ошибки.

создать мост

public static AndroidDebugBridge createBridge (long timeout, 
                TimeUnit unit)

Создаёт объект AndroidDebugBridge , не связанный ни с каким конкретным исполняемым файлом.

Этот мост будет ожидать, что adb запущен. Он не сможет запускать/останавливать/перезапускать adb.

Если мост уже запущен, он возвращается напрямую без изменений (аналогично вызову метода getBridge() ).

Параметры
timeout long

unit TimeUnit

Возвраты
AndroidDebugBridge подключенный мост или null, если при создании моста или подключении к нему возникли ошибки.

создать мост

public static AndroidDebugBridge createBridge (String osLocation, 
                boolean forceNewBridge)

Этот метод устарел.
Этот метод может зависнуть, если ADB не отвечает. Вместо него используйте createBridge(String,boolean,long,TimeUnit) .

Создает новый отладочный мост из места расположения инструмента командной строки.

Любой существующий сервер будет отключен, если только его местоположение не совпадает и forceNewBridge не установлен в значение false.

Параметры
osLocation String : адрес инструмента командной строки 'adb'.

forceNewBridge boolean : принудительное создание нового моста, даже если мост с тем же местоположением уже существует.

Возвраты
AndroidDebugBridge подключенный мост или null, если при создании моста или подключении к нему возникли ошибки.

создать мост

public static AndroidDebugBridge createBridge ()

Этот метод устарел.
Этот метод может зависнуть, если ADB не отвечает. Вместо него используйте createBridge(long,TimeUnit) .

Создаёт объект AndroidDebugBridge , не связанный ни с каким конкретным исполняемым файлом.

Этот мост будет ожидать, что adb запущен. Он не сможет запускать/останавливать/перезапускать adb.

Если мост уже запущен, он возвращается напрямую без изменений (аналогично вызову метода getBridge() ).

Возвраты
AndroidDebugBridge подключенный мост или null, если при создании моста или подключении к нему возникли ошибки.

устройствоИзменено

public static void deviceChanged (IDevice device, 
                int changeMask)

Уведомить слушателя об изменении IDevice .

Уведомление слушателей осуществляется в синхронизированном блоке. Важно понимать, что слушатели потенциально могут обращаться к различным методам IDevice , а также getDevices() , которые используют внутренние блокировки.

Параметры
device IDevice : модифицированная версия IDevice .

changeMask int

устройствоПодключено

public static void deviceConnected (IDevice device)

Уведомить слушателя о новом IDevice .

Уведомление слушателей осуществляется в синхронизированном блоке. Важно понимать, что слушатели потенциально могут обращаться к различным методам IDevice , а также getDevices() , которые используют внутренние блокировки.

Параметры
device IDevice : новый IDevice .

устройствоОтключено

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

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<List<AdbDevice>> getRawDeviceList ()

Возвращает набор устройств, указанных в командной строке adb. В основном это предназначено для Connection Assistant или других диагностических инструментов, которым необходимо проверить состояние списка getDevices() через другой канал. Коду, которому просто нужен доступ к списку устройств, следует вместо этого вызывать getDevices() .

Возвраты
ListenableFuture<List< AdbDevice >>

getRestartAttemptCount

public int getRestartAttemptCount ()

Возвращает количество попыток перезапуска демона adb, предпринятых объектом AndroidDebugBridge .

Возвраты
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 после своего создания.

Вызов метода getDevices() сразу после createBridge(String,boolean) обычно приводит к получению пустого списка. Это связано с внутренним механизмом асинхронной связи с adb , который не гарантирует, что список IDevice будет сформирован до вызова getDevices() .

Рекомендуемый способ получения списка объектов IDevice — создание объекта IDeviceChangeListener .

Возвраты
boolean

инициализация

public static void init (AdbInitOptions options)

Аналогично функции init() , с возможностью передачи пользовательского набора переменных окружения.

Параметры
options AdbInitOptions

инициализация

public static void init (boolean useLibusb, 
                Map<String, String> env)

Аналогично функции init() , с возможностью включения libusb и передачи пользовательского набора переменных окружения.

Параметры
useLibusb boolean

env Map

инициализация

public static void init ()

Инициализирует библиотеку ddm .

Этот метод необходимо вызвать один раз перед любым вызовом функции createBridge(String,boolean) .

Настройки ddmlib также следует инициализировать значениями по умолчанию, которые были изменены по сравнению со значениями по умолчанию.

При завершении работы приложения следует вызвать terminate() .

initIfNeeded

public static void initIfNeeded ()

Библиотека инициализируется только при необходимости; устарела для использования вне тестовых целей.

См. также:

isConnected

public boolean isConnected ()

Возвращает значение, указывающее, подключен ли объект AndroidDebugBridge к демону adb.

Возвраты
boolean

isUserManagedAdbMode

public static boolean isUserManagedAdbMode ()

Возвраты
boolean При работе в режиме управления ADB пользователем, где ddmlib не будет и не должен управлять сервером ADB.

открытое соединение

public static SocketChannel openConnection ()

Предпринимаются попытки подключения к локальному серверу отладки Android.

Возвраты
SocketChannel подключенный разъем в случае успеха

Броски
IOException должны возникать ошибки при открытии соединения.

removeDebugBridgeChangElistener

public static void removeDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)

Удаляет слушателя из коллекции слушателей, которые будут уведомлены о запуске нового AndroidDebugBridge .

Параметры
listener AndroidDebugBridge.IDebugBridgeChangeListener : Слушатель, которому больше не следует отправлять уведомления.

removeDeviceChangListener

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 истина в случае успеха.

перезапуск

public boolean restart ()

Этот метод устарел.
Этот метод может зависнуть, если ADB не отвечает. Вместо него используйте restart(long,TimeUnit) .

Приводит к перезапуску adb, но не окружающих его служб.

Возвраты
boolean истина в случае успеха.

startAdb

public boolean startAdb (long timeout, 
                TimeUnit unit)

Запускает сервер ADB на стороне хоста. Этот метод не следует использовать при работе с управляемым пользователем сервером ADB, поскольку жизненный цикл сервера должен управляться пользователем, а не ddmlib.

Параметры
timeout long

unit TimeUnit

Возвраты
boolean истинно, если успех

завершить

public static void terminate ()

Завершает работу библиотеки ddm. Эту функцию необходимо вызвать при завершении работы приложения.