AdbHelper
public
final
class
AdbHelper
extends Object
| java.lang.Object
|
| ↳ |
com.android.tradefed.device.server.AdbHelper
|
Lớp trợ giúp để xử lý các yêu cầu và kết nối với adb.
AndroidDebugBridge là API công khai để kết nối với adb, trong khi AdbHelper thực hiện các thao tác ở cấp thấp.
Thao tác này hiện đang sử dụng I/O không chặn theo cơ chế chờ đợi quay vòng. Việc sử dụng Bộ chọn sẽ hiệu quả hơn, nhưng có vẻ không cần thiết cho những gì chúng ta đang làm ở đây.
Tóm tắt
Phương thức công khai |
static
void
|
createForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec, String remotePortSpec)
Tạo một quy tắc chuyển tiếp cổng giữa cổng cục bộ và cổng từ xa.
|
static
AdbCommandRejectedException
|
createHiddenException(String message, boolean errorDuringDeviceSelection)
|
static
AdbCommandRejectedException
|
createHiddenException(String message)
|
static
byte[]
|
createJdwpForwardRequest(int pid)
Tạo yêu cầu chuyển tiếp cổng đến một quy trình jdwp.
|
static
SocketChannel
|
createPassThroughConnection(InetSocketAddress adbSockAddr, String deviceSerialNumber, int pid)
Tạo và kết nối một socket truyền thẳng mới, từ máy chủ lưu trữ đến một cổng trên thiết bị.
|
static
void
|
createReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec, String localPortSpec)
Tạo một cổng đảo ngược giữa cổng từ xa và cổng cục bộ.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Thực thi một lệnh shell trên thiết bị và truy xuất đầu ra.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, AdbHelper.AdbService adbService, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits, InputStream is)
Thực thi một lệnh từ xa trên thiết bị và truy xuất đầu ra.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Thực thi một lệnh shell trên thiết bị và truy xuất đầu ra.
|
static
byte[]
|
formAdbRequest(String payloadString)
Tạo một chuỗi ASCII có bốn chữ số thập lục phân ở phía trước.
|
static
String
|
getFeatures(IDevice device)
Truy vấn một tập hợp các tính năng được hỗ trợ trên thiết bị.
|
static
RawImage
|
getFrameBuffer(InetSocketAddress adbSockAddr, IDevice device, long timeout, TimeUnit unit)
Truy xuất bộ nhớ đệm khung hình từ thiết bị với thời gian chờ đã cho.
|
static
String
|
getHostFeatures()
Truy vấn một tập hợp các tính năng được hỗ trợ từ máy chủ lưu trữ ADB.
|
static
SocketChannel
|
open(InetSocketAddress adbSockAddr, IDevice device, int devicePort)
Tạo và kết nối một socket truyền thẳng mới, từ máy chủ lưu trữ đến một cổng trên thiết bị.
|
static
SocketChannel
|
rawAdbService(InetSocketAddress socketAddress, IDevice device, String command, AdbHelper.AdbService service)
Gọi dịch vụ trên một thiết bị từ xa.
|
static
SocketChannel
|
rawExec(InetSocketAddress socketAddress, IDevice device, String executable, String[] parameters)
Gọi dịch vụ host:exec trên một thiết bị từ xa.
|
static
AdbHelper.AdbResponse
|
readAdbResponse(SocketChannel chan, boolean readDiagString)
Đọc phản hồi từ ADB sau một lệnh.
|
static
void
|
reboot(String into, InetSocketAddress adbSockAddr, IDevice device)
Khởi động lại thiết bị.
|
static
void
|
removeForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec)
Xoá hoạt động chuyển tiếp cổng giữa cổng cục bộ và cổng từ xa.
|
static
void
|
removeReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec)
Xoá hoạt động đảo ngược cổng giữa cổng từ xa và cổng cục bộ.
|
static
void
|
root(InetSocketAddress adbSockAddr, IDevice device)
Yêu cầu tiến trình nền adb chuyển sang quyền root trên thiết bị.
|
static
void
|
setDevice(SocketChannel adbChan, IDevice device)
Cho một IDevice, hãy lấy số sê-ri và yêu cầu adb giao tiếp với thiết bị đó.
|
static
void
|
setDevice(SocketChannel adbChan, String deviceSerialNumber)
cho adb biết cần giao tiếp với một thiết bị cụ thể
|
static
void
|
write(SocketChannel chan, byte[] data, int length, int timeout)
Ghi cho đến khi tất cả dữ liệu trong "data" được ghi, đạt đến độ dài không bắt buộc, hết thời gian chờ hoặc kết nối bị lỗi.
|
static
void
|
write(SocketChannel chan, byte[] data)
Ghi cho đến khi tất cả dữ liệu trong "data" được ghi hoặc kết nối bị lỗi hoặc hết thời gian chờ.
|
Hằng số
HOST_TRANSPORT
public static final String HOST_TRANSPORT
Giá trị không đổi:
"host:transport:"
Trường
DEFAULT_CHARSET
public static final Charset DEFAULT_CHARSET
Phương thức công khai
createForward
public static void createForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec,
String remotePortSpec)
Tạo một quy tắc chuyển tiếp cổng giữa cổng cục bộ và cổng từ xa.
| Tham số |
adbSockAddr |
InetSocketAddress: địa chỉ socket để kết nối với adb |
device |
IDevice: thiết bị mà bạn muốn chuyển tiếp cổng |
localPortSpec |
String: quy cách của cổng cục bộ cần chuyển tiếp, phải có định dạng tcp: |
remotePortSpec |
String: quy cách của cổng từ xa cần chuyển tiếp đến một trong các cổng sau: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(chỉ từ xa) |
createHiddenException
public static AdbCommandRejectedException createHiddenException (String message,
boolean errorDuringDeviceSelection)
| Tham số |
message |
String |
errorDuringDeviceSelection |
boolean |
createJdwpForwardRequest
public static byte[] createJdwpForwardRequest (int pid)
Tạo yêu cầu chuyển tiếp cổng đến một quy trình jdwp. Thao tác này sẽ trả về một mảng chứa "####jwdp:{pid}".
| Tham số |
pid |
int: pid của quy trình jdwp trên thiết bị. |
createPassThroughConnection
public static SocketChannel createPassThroughConnection (InetSocketAddress adbSockAddr,
String deviceSerialNumber,
int pid)
Tạo và kết nối một socket truyền thẳng mới, từ máy chủ lưu trữ đến một cổng trên thiết bị.
| Tham số |
deviceSerialNumber |
String: số sê-ri của thiết bị cần kết nối. Có thể là giá trị rỗng hoặc trống. Trong trường hợp này, kết nối sẽ được thực hiện với thiết bị có sẵn đầu tiên. |
pid |
int: pid quy trình để kết nối. |
| Giá trị trả về |
SocketChannel |
|
createReverse
public static void createReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec,
String localPortSpec)
Tạo một cổng đảo ngược giữa cổng từ xa và cổng cục bộ.
| Tham số |
adbSockAddr |
InetSocketAddress: địa chỉ socket để kết nối với adb |
device |
IDevice: thiết bị mà bạn muốn đảo ngược cổng |
remotePortSpec |
String: quy cách của cổng từ xa cần đảo ngược đến một trong các cổng sau: tcp:
localabstract: localreserved: localfilesystem: dev: jdwp:
(chỉ từ xa) |
localPortSpec |
String: quy cách của cổng cục bộ, phải có định dạng tcp: |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Thực thi một lệnh shell trên thiết bị và truy xuất đầu ra. Đầu ra sẽ được chuyển đến rcvr khi đầu ra đến.
| Tham số |
adbSockAddr |
InetSocketAddress: ERROR(/InetSocketAddress) đến adb. |
command |
String: lệnh shell cần thực thi |
device |
IDevice: IDevice mà bạn muốn thực thi lệnh. |
rcvr |
IShellOutputReceiver: IShellOutputReceiver sẽ nhận được đầu ra của lệnh shell |
maxTimeToOutputResponse |
long: thời gian tối đa giữa các đầu ra lệnh. Nếu thời gian giữa các đầu ra lệnh dài hơn, phương thức sẽ gửi ShellCommandUnresponsiveException. Giá trị 0 có nghĩa là phương thức sẽ chờ đầu ra của lệnh mãi mãi và không bao giờ gửi. |
maxTimeUnits |
TimeUnit: Đơn vị cho các giá trị maxTimeToOutputResponse khác 0. |
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
AdbHelper.AdbService adbService,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits,
InputStream is)
Thực thi một lệnh từ xa trên thiết bị và truy xuất đầu ra. Đầu ra sẽ được chuyển đến rcvr khi đầu ra đến. Lệnh này được thực thi bởi dịch vụ từ xa do tham số adbService xác định.
| Tham số |
adbSockAddr |
InetSocketAddress: ERROR(/InetSocketAddress) đến adb. |
adbService |
AdbHelper.AdbService: AdbHelper.AdbService để dùng chạy lệnh. |
command |
String: lệnh shell cần thực thi |
device |
IDevice: IDevice mà bạn muốn thực thi lệnh. |
rcvr |
IShellOutputReceiver: IShellOutputReceiver sẽ nhận được đầu ra của lệnh shell |
maxTimeout |
long: thời gian chờ tối đa để thực thi toàn bộ lệnh. Giá trị 0 có nghĩa là không có thời gian chờ. |
maxTimeToOutputResponse |
long: thời gian tối đa giữa các đầu ra lệnh. Nếu thời gian giữa các đầu ra lệnh dài hơn, phương thức sẽ gửi ShellCommandUnresponsiveException. Giá trị 0 có nghĩa là phương thức sẽ chờ đầu ra của lệnh mãi mãi và không bao giờ gửi. |
maxTimeUnits |
TimeUnit: Đơn vị cho các giá trị maxTimeout và maxTimeToOutputResponse khác 0. |
is |
InputStream: ERROR(/InputStream) không bắt buộc sẽ được truyền trực tuyến sau khi gọi lệnh và trước khi truy xuất phản hồi. |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Thực thi một lệnh shell trên thiết bị và truy xuất đầu ra. Đầu ra sẽ được chuyển đến rcvr khi đầu ra đến.
| Tham số |
adbSockAddr |
InetSocketAddress: ERROR(/InetSocketAddress) đến adb. |
command |
String: lệnh shell cần thực thi |
device |
IDevice: IDevice mà bạn muốn thực thi lệnh. |
rcvr |
IShellOutputReceiver: IShellOutputReceiver sẽ nhận được đầu ra của lệnh shell |
maxTimeout |
long: thời gian tối đa để lệnh trả về. Giá trị 0 có nghĩa là sẽ không áp dụng thời gian chờ tối đa. |
maxTimeToOutputResponse |
long: thời gian tối đa giữa các đầu ra lệnh. Nếu thời gian giữa các đầu ra lệnh dài hơn, phương thức sẽ gửi ShellCommandUnresponsiveException. Giá trị 0 có nghĩa là phương thức sẽ chờ đầu ra của lệnh mãi mãi và không bao giờ gửi. |
maxTimeUnits |
TimeUnit: Đơn vị cho các giá trị maxTimeout và maxTimeToOutputResponse khác 0. |
public static byte[] formAdbRequest (String payloadString)
Tạo một chuỗi ASCII có bốn chữ số thập lục phân ở phía trước. "####" mở đầu là độ dài của phần còn lại của chuỗi, được mã hoá dưới dạng ASCII thập lục phân (không phân biệt chữ hoa chữ thường).
| Tham số |
payloadString |
String |
getFeatures
public static String getFeatures (IDevice device)
Truy vấn một tập hợp các tính năng được hỗ trợ trên thiết bị.
| Tham số |
device |
IDevice: thiết bị mà bạn muốn chuyển tiếp cổng |
getFrameBuffer
public static RawImage getFrameBuffer (InetSocketAddress adbSockAddr,
IDevice device,
long timeout,
TimeUnit unit)
Truy xuất bộ nhớ đệm khung hình từ thiết bị với thời gian chờ đã cho. Thời gian chờ là 0 cho biết rằng nó sẽ đợi mãi mãi.
| Tham số |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
timeout |
long |
unit |
TimeUnit |
getHostFeatures
public static String getHostFeatures ()
Truy vấn một tập hợp các tính năng được hỗ trợ từ máy chủ lưu trữ ADB.
open
public static SocketChannel open (InetSocketAddress adbSockAddr,
IDevice device,
int devicePort)
Tạo và kết nối một socket truyền thẳng mới, từ máy chủ lưu trữ đến một cổng trên thiết bị.
| Tham số |
device |
IDevice: thiết bị cần kết nối. Có thể là giá trị rỗng, trong trường hợp đó, kết nối sẽ được thực hiện với thiết bị có sẵn đầu tiên. |
devicePort |
int: cổng mà chúng ta đang mở |
| Giá trị trả về |
SocketChannel |
|
rawAdbService
public static SocketChannel rawAdbService (InetSocketAddress socketAddress,
IDevice device,
String command,
AdbHelper.AdbService service)
Gọi dịch vụ trên một thiết bị từ xa. Trả về một kênh socket được kết nối với quy trình thực thi.
ddlmib từ bỏ quyền sở hữu SocketChannel được trả về và phải được đóng rõ ràng sau khi sử dụng.
| Tham số |
device |
IDevice: thiết bị cần kết nối. Có thể là giá trị rỗng, trong trường hợp đó, kết nối sẽ được thực hiện với thiết bị có sẵn đầu tiên. |
command |
String: lệnh cần thực thi |
service |
AdbHelper.AdbService: AdbHelper.AdbService để dùng chạy lệnh. |
| Giá trị trả về |
SocketChannel |
|
rawExec
public static SocketChannel rawExec (InetSocketAddress socketAddress,
IDevice device,
String executable,
String[] parameters)
Gọi dịch vụ host:exec trên một thiết bị từ xa. Trả về một kênh socket được kết nối với quy trình thực thi. Xin lưu ý rằng dịch vụ exec không phân biệt stdout và stderr, vì vậy, bất cứ nội dung nào được đọc từ socket đều có thể đến từ cả hai đầu ra và được xen kẽ.
ddlmib từ bỏ quyền sở hữu SocketChannel được trả về và phải được đóng rõ ràng sau khi sử dụng.
| Tham số |
device |
IDevice: thiết bị cần kết nối. Có thể là giá trị rỗng, trong trường hợp đó, kết nối sẽ được thực hiện với thiết bị có sẵn đầu tiên. |
executable |
String: đường dẫn tuyệt đối của tệp thực thi cần chạy |
parameters |
String: các tham số cần được cung cấp khi thực thi tệp thực thi |
| Giá trị trả về |
SocketChannel |
|
readAdbResponse
public static AdbHelper.AdbResponse readAdbResponse (SocketChannel chan,
boolean readDiagString)
Đọc phản hồi từ ADB sau một lệnh.
| Tham số |
chan |
SocketChannel: Kênh socket được kết nối với adb. |
readDiagString |
boolean: Nếu đúng, chúng tôi dự kiến phản hồi OKAY sẽ đi kèm với một chuỗi chẩn đoán. Nếu không, chúng tôi chỉ mong đợi chuỗi chẩn đoán tuân theo một FAIL. |
| Gửi |
TimeoutException |
trong trường hợp hết thời gian chờ kết nối. |
|
trong trường hợp xảy ra lỗi I/O trên kết nối. |
khởi động lại
public static void reboot (String into,
InetSocketAddress adbSockAddr,
IDevice device)
Khởi động lại thiết bị.
| Tham số |
into |
String: chế độ khởi động lại (chế độ khôi phục, trình tải khởi động). Hoặc giá trị rỗng để chỉ khởi động lại. |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
removeForward
public static void removeForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec)
Xoá hoạt động chuyển tiếp cổng giữa cổng cục bộ và cổng từ xa.
| Tham số |
adbSockAddr |
InetSocketAddress: địa chỉ socket để kết nối với adb |
device |
IDevice: thiết bị mà bạn muốn xoá tính năng chuyển tiếp cổng |
localPortSpec |
String: quy cách của cổng cục bộ đã được chuyển tiếp, phải có định dạng tcp: |
removeReverse
public static void removeReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec)
Xoá hoạt động đảo ngược cổng giữa cổng từ xa và cổng cục bộ.
| Tham số |
adbSockAddr |
InetSocketAddress: địa chỉ socket để kết nối với adb |
device |
IDevice: thiết bị mà bạn muốn xoá tính năng đảo ngược cổng |
remotePortSpec |
String: quy cách của cổng từ xa được đảo ngược, một trong các cổng: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(chỉ từ xa) |
root
public static void root (InetSocketAddress adbSockAddr,
IDevice device)
Yêu cầu tiến trình nền adb chuyển sang quyền root trên thiết bị. Lệnh này có thể thất bại ngầm và chỉ thành công trên các bản dựng dành cho nhà phát triển. Để biết thêm thông tin, vui lòng tham khảo lệnh "adb root". Nếu cần biết thao tác có thành công hay không, bạn có thể kiểm tra kết quả của phương thức executeRemoteCommand bằng lệnh "echo \$USER_ID". Nếu kết quả trả về là 0 thì tức là tiến trình adbd đang chạy với quyền root.
| Tham số |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
setDevice
public static void setDevice (SocketChannel adbChan,
IDevice device)
Cho trước một IDevice, hãy lấy số sê-ri và yêu cầu adb giao tiếp với thiết bị đó.
| Tham số |
adbChan |
SocketChannel: kết nối socket với adb. |
device |
IDevice: thiết bị để giao tiếp. |
setDevice
public static void setDevice (SocketChannel adbChan,
String deviceSerialNumber)
cho adb biết cần giao tiếp với một thiết bị cụ thể
| Tham số |
adbChan |
SocketChannel: kết nối socket với adb |
deviceSerialNumber |
String: số sê-ri của thiết bị cần giao tiếp, nếu giá trị này là null thì thiết bị mặc định được chọn là thiết bị do adb chọn. |
write
public static void write (SocketChannel chan,
byte[] data,
int length,
int timeout)
Ghi cho đến khi tất cả dữ liệu trong "data" được ghi, đạt đến độ dài không bắt buộc, hết thời gian chờ hoặc kết nối bị lỗi. Trả về "true" nếu tất cả dữ liệu đã được ghi.
| Tham số |
chan |
SocketChannel: socket đã mở để ghi vào. |
data |
byte: vùng đệm cần gửi. |
length |
int: độ dài cần ghi hoặc -1 để gửi toàn bộ vùng đệm. |
timeout |
int: Giá trị thời gian chờ. Thời gian chờ bằng 0 có nghĩa là "chờ mãi mãi". |
| Gửi |
TimeoutException |
trong trường hợp hết thời gian chờ kết nối. |
|
trong trường hợp xảy ra lỗi I/O trên kết nối. |
write
public static void write (SocketChannel chan,
byte[] data)
Ghi cho đến khi tất cả dữ liệu trong "data" được ghi hoặc kết nối bị lỗi hoặc hết thời gian chờ.
Thao tác này sử dụng giá trị thời gian chờ mặc định.
| Tham số |
chan |
SocketChannel: socket đã mở để ghi vào. |
data |
byte: vùng đệm để gửi. |
| Gửi |
TimeoutException |
trong trường hợp hết thời gian chờ kết nối. |
|
trong trường hợp xảy ra lỗi I/O trên kết nối. |