AdbHelper
public
final
class
AdbHelper
extends Object
| java.lang.Object
|
| ↳ |
com.android.tradefed.device.server.AdbHelper
|
adb へのリクエストと接続を処理するヘルパークラス。
AndroidDebugBridge は adb に接続するための公開 API で、AdbHelper は低レベルの処理を行います。
現在、これはスピン待機非ブロック I/O を使用しています。セレクタの方が効率的ですが、ここではやりすぎのようです。
概要
パブリック メソッド |
static
void
|
createForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec, String remotePortSpec)
ローカル ポートとリモート ポート間のポート転送を作成します。
|
static
AdbCommandRejectedException
|
createHiddenException(String message, boolean errorDuringDeviceSelection)
|
static
AdbCommandRejectedException
|
createHiddenException(String message)
|
static
byte[]
|
createJdwpForwardRequest(int pid)
jdwp プロセスへのポート転送リクエストを作成します。
|
static
SocketChannel
|
createPassThroughConnection(InetSocketAddress adbSockAddr, String deviceSerialNumber, int pid)
ホストからデバイスのポートへの新しいパススルー ソケットを作成して接続します。
|
static
void
|
createReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec, String localPortSpec)
リモート ポートとローカル ポート間のポート反転を作成します。
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, AdbHelper.AdbService adbService, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits, InputStream is)
デバイスでリモート コマンドを実行し、出力を取得します。
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
デバイスでシェルコマンドを実行し、出力を取得します。
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
デバイスでシェルコマンドを実行し、出力を取得します。
|
static
byte[]
|
formAdbRequest(String payloadString)
4 桁の 16 進数に続く ASCII 文字列を作成します。
|
static
String
|
getFeatures(IDevice device)
デバイスからサポートされている機能のセットをクエリします。
|
static
RawImage
|
getFrameBuffer(InetSocketAddress adbSockAddr, IDevice device, long timeout, TimeUnit unit)
指定されたタイムアウトでデバイスからフレームバッファを取得します。
|
static
String
|
getHostFeatures()
ADB ホストからサポートされている機能のセットをクエリします。
|
static
SocketChannel
|
open(InetSocketAddress adbSockAddr, IDevice device, int devicePort)
ホストからデバイスのポートへの新しいパススルー ソケットを作成して接続します。
|
static
SocketChannel
|
rawAdbService(InetSocketAddress socketAddress, IDevice device, String command, AdbHelper.AdbService service)
リモート デバイスでサービスを呼び出します。
|
static
SocketChannel
|
rawExec(InetSocketAddress socketAddress, IDevice device, String executable, String[] parameters)
リモート デバイスで host:exec サービスを呼び出します。
|
static
AdbHelper.AdbResponse
|
readAdbResponse(SocketChannel chan, boolean readDiagString)
コマンドの後に ADB からのレスポンスを読み取ります。
|
static
void
|
reboot(String into, InetSocketAddress adbSockAddr, IDevice device)
デバイスを再起動します。
|
static
void
|
removeForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec)
ローカル ポートとリモート ポート間のポート転送を削除します。
|
static
void
|
removeReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec)
リモート ポートとローカル ポート間のポート反転を削除します。
|
static
void
|
root(InetSocketAddress adbSockAddr, IDevice device)
adb デーモンにデバイスのルート権限を取得するようリクエストします。
|
static
void
|
setDevice(SocketChannel adbChan, String deviceSerialNumber)
特定のデバイスと通信するよう adb に指示します。
|
static
void
|
setDevice(SocketChannel adbChan, IDevice device)
IDevice が指定された場合、シリアル番号を取得し、そのデバイスと通信するよう adb に指示します。
|
static
void
|
write(SocketChannel chan, byte[] data, int length, int timeout)
「data」内のすべてのデータが書き込まれるか、オプションの長さが上限に達するか、タイムアウトが切れるか、接続が失敗するまで書き込みます。
|
static
void
|
write(SocketChannel chan, byte[] data)
「data」内のすべてのデータが書き込まれるか、接続が失敗またはタイムアウトするまで書き込みます。
|
定数
HOST_TRANSPORT
public static final String HOST_TRANSPORT
定数値:
"host:transport:"
フィールド
DEFAULT_CHARSET
public static final Charset DEFAULT_CHARSET
パブリック メソッド
createForward
public static void createForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec,
String remotePortSpec)
ローカル ポートとリモート ポート間のポート転送を作成します。
| パラメータ |
adbSockAddr |
InetSocketAddress: adb に接続するソケット アドレス |
device |
IDevice: ポート転送を行うデバイス |
localPortSpec |
String: 転送するローカルポートの指定。形式は tcp:にする必要があります。 |
remotePortSpec |
String: 転送先のリモートポートの指定。次のいずれか: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(リモートのみ) |
createHiddenException
public static AdbCommandRejectedException createHiddenException (String message,
boolean errorDuringDeviceSelection)
| パラメータ |
message |
String |
errorDuringDeviceSelection |
boolean |
createJdwpForwardRequest
public static byte[] createJdwpForwardRequest (int pid)
jdwp プロセスへのポート転送リクエストを作成します。これにより、「####jwdp:{pid}」を含む配列が返されます。
| パラメータ |
pid |
int: デバイス上の jdwp プロセスの PID。 |
createPassThroughConnection
public static SocketChannel createPassThroughConnection (InetSocketAddress adbSockAddr,
String deviceSerialNumber,
int pid)
ホストからデバイスのポートへの新しいパススルー ソケットを作成して接続します。
| パラメータ |
deviceSerialNumber |
String: 接続するデバイスのシリアル番号。null または空にできます。その場合、接続は最初に使用可能なデバイスに対して行われます。 |
pid |
int: 接続するプロセス PID。 |
createReverse
public static void createReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec,
String localPortSpec)
リモートポートとローカルポート間のポート反転を作成します。
| パラメータ |
adbSockAddr |
InetSocketAddress: adb に接続するソケット アドレス |
device |
IDevice: ポートの反転を行うデバイス |
remotePortSpec |
String: 逆転送するリモートポートの指定。次のいずれか: tcp:
localabstract: localreserved: localfilesystem: dev: jdwp:
(リモートのみ) |
localPortSpec |
String: ローカルポートの指定。形式は tcp:にする必要があります。 |
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
AdbHelper.AdbService adbService,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits,
InputStream is)
デバイスでリモート コマンドを実行し、出力を取得します。出力は到着時に rcvr に渡されます。このコマンドは、adbService パラメータで識別されるリモート サービスによって実行されます。
| パラメータ |
adbSockAddr |
InetSocketAddress: adb に渡す InetSocketAddress。 |
adbService |
AdbHelper.AdbService: コマンドの実行に使用する AdbHelper.AdbService。 |
command |
String: 実行するシェルコマンド |
device |
IDevice: コマンドを実行する IDevice。 |
rcvr |
IShellOutputReceiver: シェル コマンドの出力を受け取る IShellOutputReceiver |
maxTimeout |
long: コマンド全体の実行の最大タイムアウト。値 0 は、タイムアウトがないことを意味します。 |
maxTimeToOutputResponse |
long: コマンド出力間の最大時間。コマンド出力の間に時間が経過すると、メソッドは ShellCommandUnresponsiveException をスローします。値が 0 の場合、メソッドはコマンド出力が返されるまで永久に待機し、スローしません。 |
maxTimeUnits |
TimeUnit: ゼロ以外の maxTimeout 値と maxTimeToOutputResponse 値の単位。 |
is |
InputStream: コマンドの呼び出し後、レスポンスの取得前にストリーミングされる InputStream(省略可)。 |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
デバイスでシェルコマンドを実行し、出力を取得します。出力は到着時に rcvr に渡されます。
| パラメータ |
adbSockAddr |
InetSocketAddress: adb に渡す InetSocketAddress。 |
command |
String: 実行するシェルコマンド |
device |
IDevice: コマンドを実行する IDevice。 |
rcvr |
IShellOutputReceiver: シェル コマンドの出力を受け取る IShellOutputReceiver |
maxTimeout |
long: コマンドが戻るまでの最大時間。値 0 は、最大タイムアウトが適用されないことを意味します。 |
maxTimeToOutputResponse |
long: コマンド出力間の最大時間。コマンド出力の間に時間が経過すると、メソッドは ShellCommandUnresponsiveException をスローします。値が 0 の場合、メソッドはコマンド出力が返されるまで永久に待機し、スローしません。 |
maxTimeUnits |
TimeUnit: ゼロ以外の maxTimeout 値と maxTimeToOutputResponse 値の単位。 |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
デバイスでシェルコマンドを実行し、出力を取得します。出力は到着時に rcvr に渡されます。
| パラメータ |
adbSockAddr |
InetSocketAddress: adb に渡す InetSocketAddress。 |
command |
String: 実行するシェルコマンド |
device |
IDevice: コマンドを実行する IDevice。 |
rcvr |
IShellOutputReceiver: シェル コマンドの出力を受け取る IShellOutputReceiver |
maxTimeToOutputResponse |
long: コマンド出力間の最大時間。コマンド出力の間に時間が経過すると、メソッドは ShellCommandUnresponsiveException をスローします。値が 0 の場合、メソッドはコマンド出力が返されるまで永久に待機し、スローしません。 |
maxTimeUnits |
TimeUnit: ゼロ以外の maxTimeToOutputResponse 値の単位。 |
public static byte[] formAdbRequest (String payloadString)
4 桁の 16 進数で始まる ASCII 文字列を作成します。先頭の「####」は、文字列の残りの部分の長さで、ASCII 16 進数でエンコードされます(大文字と小文字は区別されません)。
| パラメータ |
payloadString |
String |
getFeatures
public static String getFeatures (IDevice device)
デバイスからサポートされている機能のセットをクエリします。
| パラメータ |
device |
IDevice: ポート転送を行うデバイス |
getFrameBuffer
public static RawImage getFrameBuffer (InetSocketAddress adbSockAddr,
IDevice device,
long timeout,
TimeUnit unit)
指定されたタイムアウトでデバイスからフレームバッファを取得します。タイムアウトが 0 の場合、無期限に待機します。
| パラメータ |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
timeout |
long |
unit |
TimeUnit |
getHostFeatures
public static String getHostFeatures ()
ADB ホストからサポートされている機能のセットをクエリします。
開く
public static SocketChannel open (InetSocketAddress adbSockAddr,
IDevice device,
int devicePort)
ホストからデバイスのポートへの新しいパススルー ソケットを作成して接続します。
| パラメータ |
device |
IDevice: 接続するデバイス。null にすることもできます。その場合、接続は最初に使用可能なデバイスに対して行われます。 |
devicePort |
int: 開くポート |
rawAdbService
public static SocketChannel rawAdbService (InetSocketAddress socketAddress,
IDevice device,
String command,
AdbHelper.AdbService service)
リモート デバイスでサービスを呼び出します。実行中のプロセスに接続されているソケット チャネルを返します。
ddlmib は返された SocketChannel の所有権を放棄し、使用後に明示的に閉じる必要があります。
| パラメータ |
device |
IDevice: 接続するデバイス。null にすることもできます。その場合、接続は最初に使用可能なデバイスに対して行われます。 |
command |
String: 実行するコマンド |
service |
AdbHelper.AdbService: コマンドの実行に使用する AdbHelper.AdbService。 |
rawExec
public static SocketChannel rawExec (InetSocketAddress socketAddress,
IDevice device,
String executable,
String[] parameters)
リモート デバイスで host:exec サービスを呼び出します。実行中のプロセスに接続されているソケット チャネルを返します。exec サービスは stdout と stderr を区別しないため、ソケットから読み取られたものはどちらの出力からでも取得でき、インターリーブされる可能性があります。
ddlmib は返された SocketChannel の所有権を放棄し、使用後に明示的に閉じる必要があります。
| パラメータ |
device |
IDevice: 接続するデバイス。null にすることもできます。その場合、接続は最初に使用可能なデバイスに対して行われます。 |
executable |
String: 実行する実行ファイルの絶対パス |
parameters |
String: 実行可能ファイルの実行時に指定されるパラメータ |
readAdbResponse
public static AdbHelper.AdbResponse readAdbResponse (SocketChannel chan,
boolean readDiagString)
コマンドの後に ADB からのレスポンスを読み取ります。
| パラメータ |
chan |
SocketChannel: adb に接続されているソケット チャンネル。 |
readDiagString |
boolean: true の場合、OKAY レスポンスの後に診断文字列が続くことが想定されます。それ以外の場合は、診断文字列は FAIL の後にのみ続くことが想定されます。 |
再起動
public static void reboot (String into,
InetSocketAddress adbSockAddr,
IDevice device)
デバイスを再起動します。
| パラメータ |
into |
String: 再起動するモード(リカバリ、ブートローダー)。再起動のみを行う場合は null。 |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
removeForward
public static void removeForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec)
ローカル ポートとリモート ポート間のポート転送を削除します。
| パラメータ |
adbSockAddr |
InetSocketAddress: adb に接続するソケット アドレス |
device |
IDevice: ポート転送を削除するデバイス |
localPortSpec |
String: 転送されたローカルポートの仕様。tcp:の形式にする必要があります。 |
removeReverse
public static void removeReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec)
リモート ポートとローカル ポート間のポート反転を削除します。
| パラメータ |
adbSockAddr |
InetSocketAddress: adb に接続するソケット アドレス |
device |
IDevice: ポートの反転を削除するデバイス |
remotePortSpec |
String: 接続先のリモートポートの指定。tcp:
localabstract: localreserved: localfilesystem: dev: jdwp:
のいずれか(リモートのみ) |
root
public static void root (InetSocketAddress adbSockAddr,
IDevice device)
adb デーモンにデバイスのルート権限を取得するようリクエストします。これはサイレントに失敗する可能性があり、デベロッパー ビルドでのみ成功します。詳しくは、「adb root」をご覧ください。成功したかどうかを確認する必要がある場合は、executeRemoteCommand の結果で「echo \$USER_ID」を確認します。0 であれば、adbd は root として実行されています。
| パラメータ |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
setDevice
public static void setDevice (SocketChannel adbChan,
String deviceSerialNumber)
特定のデバイスと通信するよう adb に指示します。
| パラメータ |
adbChan |
SocketChannel: adb へのソケット接続 |
deviceSerialNumber |
String: 通信するデバイスのシリアル番号。null の場合、adb が選択したデバイスがデフォルトのデバイスとして選択されます。 |
setDevice
public static void setDevice (SocketChannel adbChan,
IDevice device)
IDevice が指定された場合、シリアル番号を取得し、そのデバイスと通信するよう adb に指示します。
| パラメータ |
adbChan |
SocketChannel: adb へのソケット接続。 |
device |
IDevice: 通信するデバイス。 |
write
public static void write (SocketChannel chan,
byte[] data,
int length,
int timeout)
「data」内のすべてのデータが書き込まれるか、オプションの長さが指定された場合、タイムアウトが切れるか、接続が失敗するまで書き込みます。すべてのデータが書き込まれた場合は「true」を返します。
| パラメータ |
chan |
SocketChannel: 書き込み先の開いているソケット。 |
data |
byte: 送信するバッファ。 |
length |
int: 書き込む長さ。バッファ全体を送信する場合は -1。 |
timeout |
int: タイムアウト値。タイムアウトが 0 の場合は「永久に待機」を意味します。 |
write
public static void write (SocketChannel chan,
byte[] data)
「data」内のすべてのデータが書き込まれるか、接続が失敗またはタイムアウトするまで書き込みます。
デフォルトのタイムアウト値が使用されます。
| パラメータ |
chan |
SocketChannel: 書き込み先の開いているソケット。 |
data |
byte: 送信するバッファ。 |