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

IDevice で実行されている ClientImpl のモニタリングと操作をサポートするように ddmlib が設定されているかどうかを返します。

int getConnectionAttemptCount()

AndroidDebugBridge オブジェクトが adb デーモンへの接続を試みた回数を返します。

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) と同様に、カスタムの環境変数を渡すことができます。

static void init(boolean clientSupport)

ddm ライブラリを初期化します。

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

init(boolean) と同様に、libusb を有効にしてカスタムの env セットを渡すことができます。

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 をリスナーに通知します。

リスナーの通知は同期ブロックで行われます。リスナーが 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 ()

IDevice で実行されている ClientImpl のモニタリングと操作をサポートするように ddmlib が設定されているかどうかを返します。

戻り値
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 デーモンの再起動を試みた回数を返します。

戻り値
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 リストが作成される保証はありません。

IDevice オブジェクトのリストを取得するには、IDeviceChangeListener オブジェクトを作成することをおすすめします。

戻り値
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 ddmlib が ADB サーバーを管理しない、または管理すべきでないユーザー管理の 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 ライブラリを終了します。これは、アプリの終了時に呼び出す必要があります。