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, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
デバイスでシェルコマンドを実行し、出力を取得します。
|
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
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, IDevice device)
IDevice が指定されたら、シリアル番号を取得して、そのデバイスと通信するように adb に指示します。
|
static
void
|
setDevice(SocketChannel adbChan, String deviceSerialNumber)
特定のデバイスと通信するよう 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:形式にする必要があります。 |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
デバイスでシェルコマンドを実行し、出力を取得します。出力は到着時に rcvr に渡されます。
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 に渡す ERROR(/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: コマンドの呼び出し後、レスポンスの取得前にストリーミングされる ERROR(/InputStream)(省略可)。 |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
デバイスでシェルコマンドを実行し、出力を取得します。出力は到着時に rcvr に渡されます。
| パラメータ |
adbSockAddr |
InetSocketAddress: adb に渡す ERROR(/InetSocketAddress)。 |
command |
String: 実行するシェルコマンド |
device |
IDevice: コマンドを実行する IDevice。 |
rcvr |
IShellOutputReceiver: シェル コマンドの出力を受け取る IShellOutputReceiver |
maxTimeout |
long: コマンドが戻るまでの最大時間。値 0 は、最大タイムアウトが適用されないことを意味します。 |
maxTimeToOutputResponse |
long: コマンド出力間の最大時間。コマンド出力間の時間が長くなると、メソッドは ShellCommandUnresponsiveException をスローします。値が 0 の場合、メソッドはコマンド出力を無期限に待機し、例外をスローしません。 |
maxTimeUnits |
TimeUnit: ゼロ以外の maxTimeout 値と 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:
のいずれか(リモートのみ) |
ルート
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,
IDevice device)
IDevice が指定された場合、シリアル番号を取得し、そのデバイスと通信するよう adb に指示します。
| パラメータ |
adbChan |
SocketChannel: adb へのソケット接続。 |
device |
IDevice: 通信するデバイス。 |
setDevice
public static void setDevice (SocketChannel adbChan,
String deviceSerialNumber)
特定のデバイスと通信するよう adb に指示します。
| パラメータ |
adbChan |
SocketChannel: adb へのソケット接続 |
deviceSerialNumber |
String: 通信するデバイスのシリアル番号。null の場合、adb が選択したデバイスがデフォルトのデバイスとして選択されます。 |
文章の作成
public static void write (SocketChannel chan,
byte[] data,
int length,
int timeout)
「data」内のすべてのデータが書き込まれるか、オプションの長さが指定された場合、その長さに達するか、タイムアウトが期限切れになるか、接続が失敗するまで書き込みます。すべてのデータが書き込まれた場合は「true」を返します。
| パラメータ |
chan |
SocketChannel: 書き込み先の開いているソケット。 |
data |
byte: 送信するバッファ。 |
length |
int: 書き込む長さ。バッファ全体を送信する場合は -1。 |
timeout |
int: タイムアウト値。タイムアウトが 0 の場合は「永久に待機」を意味します。 |
文章の作成
public static void write (SocketChannel chan,
byte[] data)
「data」内のすべてのデータが書き込まれるか、接続が失敗またはタイムアウトするまで書き込みます。
デフォルトのタイムアウト値が使用されます。
| パラメータ |
chan |
SocketChannel: 書き込み先の開いているソケット。 |
data |
byte: 送信するバッファ。 |