AdbHelper

public final class AdbHelper
extends Object

java.lang.Object
   ↳ com.android.tradefed.device.server.AdbHelper


Class helper untuk menangani permintaan dan koneksi ke adb.

AndroidDebugBridge adalah API publik untuk menghubungkan ke adb, sedangkan AdbHelper melakukan hal-hal tingkat rendah.

Saat ini menggunakan I/O non-blocking spin-wait. Pemilih akan lebih efisien, tetapi tampaknya berlebihan untuk apa yang kita lakukan di sini.

Ringkasan

Class bertingkat

class AdbHelper.AdbResponse

Respons dari ADB. 

Konstanta

String HOST_TRANSPORT

Kolom

public static final Charset DEFAULT_CHARSET

Metode publik

static void createForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec, String remotePortSpec)

Membuat penerusan port antara port lokal dan jarak jauh.

static AdbCommandRejectedException createHiddenException(String message, boolean errorDuringDeviceSelection)
static AdbCommandRejectedException createHiddenException(String message)
static byte[] createJdwpForwardRequest(int pid)

Membuat permintaan penerusan port ke proses jdwp.

static SocketChannel createPassThroughConnection(InetSocketAddress adbSockAddr, String deviceSerialNumber, int pid)

Membuat dan menghubungkan soket teruskan baru, dari host ke port di perangkat.

static void createReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec, String localPortSpec)

Membuat pembalikan port antara port jarak jauh dan port lokal.

static void executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)

Menjalankan perintah shell di perangkat dan mengambil output.

static void executeRemoteCommand(InetSocketAddress adbSockAddr, AdbHelper.AdbService adbService, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits, InputStream is)

Menjalankan perintah jarak jauh di perangkat dan mengambil output.

static void executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)

Menjalankan perintah shell di perangkat dan mengambil output.

static byte[] formAdbRequest(String payloadString)

Buat string ASCII yang diawali dengan empat digit hex.

static String getFeatures(IDevice device)

Mengirim kueri serangkaian fitur yang didukung dari perangkat.

static RawImage getFrameBuffer(InetSocketAddress adbSockAddr, IDevice device, long timeout, TimeUnit unit)

Mengambil frame buffer dari perangkat dengan waktu tunggu yang ditentukan.

static String getHostFeatures()

Mengirim kueri ke serangkaian fitur yang didukung dari host ADB.

static SocketChannel open(InetSocketAddress adbSockAddr, IDevice device, int devicePort)

Buat dan hubungkan soket teruskan baru, dari host ke port di perangkat.

static SocketChannel rawAdbService(InetSocketAddress socketAddress, IDevice device, String command, AdbHelper.AdbService service)

Panggil layanan di perangkat jarak jauh.

static SocketChannel rawExec(InetSocketAddress socketAddress, IDevice device, String executable, String[] parameters)

Panggil layanan host:exec di perangkat jarak jauh.

static AdbHelper.AdbResponse readAdbResponse(SocketChannel chan, boolean readDiagString)

Membaca respons dari ADB setelah perintah.

static void reboot(String into, InetSocketAddress adbSockAddr, IDevice device)

Boot ulang perangkat.

static void removeForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec)

Menghapus penerusan port antara port lokal dan port jarak jauh.

static void removeReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec)

Menghapus pembalikan port antara port jarak jauh dan lokal.

static void root(InetSocketAddress adbSockAddr, IDevice device)

Meminta daemon adb untuk menjadi root di perangkat.

static void setDevice(SocketChannel adbChan, IDevice device)

Mengingat IDevice mengambil nomor seri dan memberi tahu adb untuk berkomunikasi dengan perangkat tersebut.

static void setDevice(SocketChannel adbChan, String deviceSerialNumber)

memberi tahu adb untuk berkomunikasi dengan perangkat tertentu

static void write(SocketChannel chan, byte[] data, int length, int timeout)

Menulis hingga semua data dalam "data" ditulis, panjang opsional tercapai, waktu tunggu habis, atau koneksi gagal.

static void write(SocketChannel chan, byte[] data)

Menulis hingga semua data dalam "data" ditulis atau koneksi gagal atau waktu tunggu habis.

Konstanta

HOST_TRANSPORT

public static final String HOST_TRANSPORT

Nilai Konstanta: "host:transport:"

Kolom

DEFAULT_CHARSET

public static final Charset DEFAULT_CHARSET

Metode publik

createForward

public static void createForward (InetSocketAddress adbSockAddr, 
                IDevice device, 
                String localPortSpec, 
                String remotePortSpec)

Membuat penerusan port antara port lokal dan jarak jauh.

Parameter
adbSockAddr InetSocketAddress: alamat soket untuk terhubung ke adb

device IDevice: perangkat yang akan melakukan penerusan port

localPortSpec String: spesifikasi port lokal yang akan diteruskan, harus dalam format tcp:

remotePortSpec String: spesifikasi port jarak jauh yang akan diteruskan, salah satunya: tcp: localabstract: localreserved: localfilesystem: dev: jdwp: (khusus jarak jauh)

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

createHiddenException

public static AdbCommandRejectedException createHiddenException (String message, 
                boolean errorDuringDeviceSelection)

Parameter
message String

errorDuringDeviceSelection boolean

Hasil
AdbCommandRejectedException

createHiddenException

public static AdbCommandRejectedException createHiddenException (String message)

Parameter
message String

Hasil
AdbCommandRejectedException

createJdwpForwardRequest

public static byte[] createJdwpForwardRequest (int pid)

Membuat permintaan penerusan port ke proses jdwp. Tindakan ini akan menampilkan array yang berisi "####jwdp:{pid}".

Parameter
pid int: pid proses jdwp di perangkat.

Hasil
byte[]

createPassThroughConnection

public static SocketChannel createPassThroughConnection (InetSocketAddress adbSockAddr, 
                String deviceSerialNumber, 
                int pid)

Membuat dan menghubungkan soket teruskan baru, dari host ke port di perangkat.

Parameter
deviceSerialNumber String: nomor seri perangkat yang akan dihubungkan. Dapat berupa null atau kosong jika koneksi akan dilakukan ke perangkat pertama yang tersedia.

pid int: pid proses yang akan dihubungkan.

Hasil
SocketChannel

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

createReverse

public static void createReverse (InetSocketAddress adbSockAddr, 
                IDevice device, 
                String remotePortSpec, 
                String localPortSpec)

Membuat pembalikan port antara port jarak jauh dan port lokal.

Parameter
adbSockAddr InetSocketAddress: alamat soket untuk terhubung ke adb

device IDevice: perangkat yang akan melakukan pembalikan port

remotePortSpec String: spesifikasi port jarak jauh yang akan dibalik, salah satunya: tcp: localabstract: localreserved: localfilesystem: dev: jdwp: (khusus jarak jauh)

localPortSpec String: spesifikasi port lokal, harus dalam format tcp:

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

executeRemoteCommand

public static void executeRemoteCommand (InetSocketAddress adbSockAddr, 
                String command, 
                IDevice device, 
                IShellOutputReceiver rcvr, 
                long maxTimeToOutputResponse, 
                TimeUnit maxTimeUnits)

Menjalankan perintah shell di perangkat dan mengambil output. Output diserahkan ke rcvr saat tiba.

Parameter
adbSockAddr InetSocketAddress: ERROR(/InetSocketAddress) ke adb.

command String: perintah shell yang akan dijalankan

device IDevice: IDevice tempat perintah akan dieksekusi.

rcvr IShellOutputReceiver: IShellOutputReceiver yang akan menerima output perintah shell

maxTimeToOutputResponse long: waktu maksimum antara output perintah. Jika lebih banyak waktu berlalu di antara output perintah, metode akan menampilkan ShellCommandUnresponsiveException. Nilai 0 berarti metode akan menunggu output perintah selamanya dan tidak pernah memunculkan pengecualian.

maxTimeUnits TimeUnit: Satuan untuk nilai maxTimeToOutputResponse bukan nol.

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi saat mengirim perintah.
AdbCommandRejectedException jika adb menolak perintah
ShellCommandUnresponsiveException jika perintah shell tidak mengirimkan output apa pun selama jangka waktu yang lebih lama dari maxTimeToOutputResponse.
jika terjadi error I/O pada koneksi.

executeRemoteCommand

public static void executeRemoteCommand (InetSocketAddress adbSockAddr, 
                AdbHelper.AdbService adbService, 
                String command, 
                IDevice device, 
                IShellOutputReceiver rcvr, 
                long maxTimeout, 
                long maxTimeToOutputResponse, 
                TimeUnit maxTimeUnits, 
                InputStream is)

Menjalankan perintah jarak jauh di perangkat dan mengambil output. Output diserahkan ke rcvr saat tiba. Perintah dijalankan oleh layanan jarak jauh yang diidentifikasi oleh parameter adbService.

Parameter
adbSockAddr InetSocketAddress: ERROR(/InetSocketAddress) ke adb.

adbService AdbHelper.AdbService: AdbHelper.AdbService yang akan digunakan untuk menjalankan perintah.

command String: perintah shell yang akan dijalankan

device IDevice: IDevice tempat perintah akan dieksekusi.

rcvr IShellOutputReceiver: IShellOutputReceiver yang akan menerima output perintah shell

maxTimeout long: waktu tunggu maksimum agar perintah penuh dapat dieksekusi. Nilai 0 berarti tidak ada waktu tunggu.

maxTimeToOutputResponse long: waktu maksimum antara output perintah. Jika lebih banyak waktu berlalu di antara output perintah, metode akan menampilkan ShellCommandUnresponsiveException. Nilai 0 berarti metode akan menunggu output perintah selamanya dan tidak pernah memunculkan pengecualian.

maxTimeUnits TimeUnit: Satuan untuk nilai maxTimeout dan maxTimeToOutputResponse selain nol.

is InputStream: ERROR(/InputStream) opsional yang akan di-streaming setelah memanggil perintah dan sebelum mengambil respons.

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi saat mengirim perintah.
AdbCommandRejectedException jika adb menolak perintah
ShellCommandUnresponsiveException jika perintah shell tidak mengirimkan output apa pun selama jangka waktu yang lebih lama dari maxTimeToOutputResponse.
jika terjadi error I/O pada koneksi.

executeRemoteCommand

public static void executeRemoteCommand (InetSocketAddress adbSockAddr, 
                String command, 
                IDevice device, 
                IShellOutputReceiver rcvr, 
                long maxTimeout, 
                long maxTimeToOutputResponse, 
                TimeUnit maxTimeUnits)

Menjalankan perintah shell di perangkat dan mengambil output. Output diserahkan ke rcvr saat tiba.

Parameter
adbSockAddr InetSocketAddress: ERROR(/InetSocketAddress) ke adb.

command String: perintah shell yang akan dijalankan

device IDevice: IDevice tempat perintah akan dieksekusi.

rcvr IShellOutputReceiver: IShellOutputReceiver yang akan menerima output perintah shell

maxTimeout long: waktu maksimum agar perintah dapat ditampilkan. Nilai 0 berarti tidak ada waktu tunggu maksimum yang akan diterapkan.

maxTimeToOutputResponse long: waktu maksimum antara output perintah. Jika lebih banyak waktu berlalu di antara output perintah, metode akan menampilkan ShellCommandUnresponsiveException. Nilai 0 berarti metode akan menunggu output perintah selamanya dan tidak pernah memunculkan pengecualian.

maxTimeUnits TimeUnit: Satuan untuk nilai maxTimeout dan maxTimeToOutputResponse selain nol.

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi saat mengirim perintah.
AdbCommandRejectedException jika adb menolak perintah
ShellCommandUnresponsiveException jika perintah shell tidak mengirimkan output apa pun selama jangka waktu yang lebih lama dari maxTimeToOutputResponse.
jika terjadi error I/O pada koneksi.

formAdbRequest

public static byte[] formAdbRequest (String payloadString)

Buat string ASCII yang diawali dengan empat digit hex. "####" di awal adalah panjang string lainnya, yang dienkode sebagai hex ASCII (huruf besar/kecil tidak masalah).

Parameter
payloadString String

Hasil
byte[]

getFeatures

public static String getFeatures (IDevice device)

Mengirim kueri serangkaian fitur yang didukung dari perangkat.

Parameter
device IDevice: perangkat yang akan melakukan penerusan port

Hasil
String

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

getFrameBuffer

public static RawImage getFrameBuffer (InetSocketAddress adbSockAddr, 
                IDevice device, 
                long timeout, 
                TimeUnit unit)

Mengambil frame buffer dari perangkat dengan waktu tunggu yang ditentukan. Waktu tunggu 0 menunjukkan bahwa waktu tunggu akan berlangsung selamanya.

Parameter
adbSockAddr InetSocketAddress

device IDevice

timeout long

unit TimeUnit

Hasil
RawImage

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

getHostFeatures

public static String getHostFeatures ()

Mengirim kueri ke serangkaian fitur yang didukung dari host ADB.

Hasil
String

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

buka

public static SocketChannel open (InetSocketAddress adbSockAddr, 
                IDevice device, 
                int devicePort)

Buat dan hubungkan soket teruskan baru, dari host ke port di perangkat.

Parameter
device IDevice: perangkat yang akan dihubungkan. Dapat berupa null, dalam hal ini koneksi akan dilakukan ke perangkat pertama yang tersedia.

devicePort int: port yang kita buka

Hasil
SocketChannel

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
jika terjadi error I/O pada koneksi.
AdbCommandRejectedException jika adb menolak perintah

rawAdbService

public static SocketChannel rawAdbService (InetSocketAddress socketAddress, 
                IDevice device, 
                String command, 
                AdbHelper.AdbService service)

Panggil layanan di perangkat jarak jauh. Menampilkan saluran soket yang terhubung ke proses yang sedang berjalan.

ddlmib melepaskan kepemilikan SocketChannel yang ditampilkan dan harus ditutup secara eksplisit setelah digunakan.

Parameter
device IDevice: perangkat yang akan dihubungkan. Dapat berupa null, dalam hal ini koneksi akan dilakukan ke perangkat pertama yang tersedia.

command String: perintah yang akan dijalankan

service AdbHelper.AdbService: AdbHelper.AdbService yang akan digunakan untuk menjalankan perintah.

Hasil
SocketChannel

Menampilkan
IOException
com.android.ddmlib.TimeoutException
com.android.ddmlib.AdbCommandRejectedException
AdbCommandRejectedException
TimeoutException

rawExec

public static SocketChannel rawExec (InetSocketAddress socketAddress, 
                IDevice device, 
                String executable, 
                String[] parameters)

Panggil layanan host:exec di perangkat jarak jauh. Menampilkan saluran soket yang terhubung ke proses yang sedang berjalan. Perhatikan bahwa layanan exec tidak membedakan stdout dan stderr, sehingga apa pun yang dibaca dari soket dapat berasal dari output mana pun dan diselingi.

ddlmib melepaskan kepemilikan SocketChannel yang ditampilkan dan harus ditutup secara eksplisit setelah digunakan.

Parameter
device IDevice: perangkat yang akan dihubungkan. Dapat berupa null, dalam hal ini koneksi akan dilakukan ke perangkat pertama yang tersedia.

executable String: jalur absolut dari file yang dapat dieksekusi untuk dijalankan

parameters String: parameter yang akan diberikan saat menjalankan file yang dapat dieksekusi

Hasil
SocketChannel

Menampilkan
IOException
com.android.ddmlib.TimeoutException
com.android.ddmlib.AdbCommandRejectedException
AdbCommandRejectedException
TimeoutException

readAdbResponse

public static AdbHelper.AdbResponse readAdbResponse (SocketChannel chan, 
                boolean readDiagString)

Membaca respons dari ADB setelah perintah.

Parameter
chan SocketChannel: Saluran soket yang terhubung ke adb.

readDiagString boolean: Jika benar (true), kita mengharapkan respons OKAY diikuti dengan string diagnostik. Jika tidak, kami hanya mengharapkan string diagnostik mengikuti FAIL.

Hasil
AdbHelper.AdbResponse

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
jika terjadi error I/O pada koneksi.

mulai ulang

public static void reboot (String into, 
                InetSocketAddress adbSockAddr, 
                IDevice device)

Boot ulang perangkat.

Parameter
into String: apa yang akan di-reboot (pemulihan, bootloader). Atau null untuk memulai ulang saja.

adbSockAddr InetSocketAddress

device IDevice

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

removeForward

public static void removeForward (InetSocketAddress adbSockAddr, 
                IDevice device, 
                String localPortSpec)

Menghapus penerusan port antara port lokal dan port jarak jauh.

Parameter
adbSockAddr InetSocketAddress: alamat soket untuk terhubung ke adb

device IDevice: perangkat tempat penghapusan penerusan port dilakukan

localPortSpec String: spesifikasi port lokal yang diteruskan, harus dalam format tcp:

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

removeReverse

public static void removeReverse (InetSocketAddress adbSockAddr, 
                IDevice device, 
                String remotePortSpec)

Menghapus pembalikan port antara port jarak jauh dan lokal.

Parameter
adbSockAddr InetSocketAddress: alamat soket untuk terhubung ke adb

device IDevice: perangkat yang akan dihapus pembalikan portnya

remotePortSpec String: spesifikasi port jarak jauh yang dibalik, salah satunya: tcp: localabstract: localreserved: localfilesystem: dev: jdwp: (khusus jarak jauh)

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

root

public static void root (InetSocketAddress adbSockAddr, 
                IDevice device)

Meminta daemon adb untuk menjadi root di perangkat. Tindakan ini mungkin gagal tanpa pemberitahuan, dan hanya dapat berhasil pada build developer. Lihat "adb root" untuk mengetahui informasi selengkapnya. Jika Anda perlu mengetahui apakah berhasil, Anda dapat memeriksa hasil executeRemoteCommand pada 'echo \$USER_ID', jika 0 maka adbd berjalan sebagai root.

Parameter
adbSockAddr InetSocketAddress

device IDevice

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

setDevice

public static void setDevice (SocketChannel adbChan, 
                IDevice device)

Mengingat IDevice mengambil nomor seri dan memberi tahu adb untuk berkomunikasi dengan perangkat tersebut.

Parameter
adbChan SocketChannel: koneksi soket ke adb.

device IDevice: perangkat yang akan diajak bicara.

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

setDevice

public static void setDevice (SocketChannel adbChan, 
                String deviceSerialNumber)

memberi tahu adb untuk berkomunikasi dengan perangkat tertentu

Parameter
adbChan SocketChannel: koneksi soket ke adb

deviceSerialNumber String: serial perangkat yang akan diajak berkomunikasi, jika null, perangkat default yang dipilih adalah perangkat yang dipilih oleh adb.

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
AdbCommandRejectedException jika adb menolak perintah
jika terjadi error I/O pada koneksi.

menulis

public static void write (SocketChannel chan, 
                byte[] data, 
                int length, 
                int timeout)

Menulis hingga semua data dalam "data" ditulis, panjang opsional tercapai, waktu tunggu habis, atau koneksi gagal. Menampilkan "true" jika semua data telah ditulis.

Parameter
chan SocketChannel: soket yang dibuka untuk menulis.

data byte: buffer yang akan dikirim.

length int: panjang yang akan ditulis atau -1 untuk mengirim seluruh buffer.

timeout int: Nilai waktu tunggu. Waktu tunggu nol berarti "tunggu selamanya".

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
jika terjadi error I/O pada koneksi.

menulis

public static void write (SocketChannel chan, 
                byte[] data)

Menulis hingga semua data dalam "data" ditulis atau koneksi gagal atau waktu tunggu habis.

Tindakan ini menggunakan nilai waktu tunggu default.

Parameter
chan SocketChannel: soket yang dibuka untuk menulis.

data byte: buffer yang akan dikirim.

Menampilkan
TimeoutException jika terjadi waktu tunggu habis pada koneksi.
jika terjadi error I/O pada koneksi.