android adb 源码框架分析(4 服务)

服务

响应外部请求,创建服务。服务对外表现形式是套接字(asocket)。

设备端程序拥有的服务在create_local_service_socket中创建,主机端程序还有一些特有的服务在create_host_service_socket中创建。初次之外,轻型套接字处理的立即完成的请求,虽然没有创建套接字,也是一种逻辑上的服务。

在create_local_service_socket中创建的服务有下面这些,除了jdwp和track-jdwp直接创建定制的套接字外,其他服务都是创建服务对应的文件句柄,再通过本地套接字包装。

主机和设备都有的服务:

服务名

参数

创建方式

说明

tcp

port[:host]

socket_loopback_client(port)

socket_network_client(host,port)

基于TCP的服务

Daemon不支持host

local

name

socket_local_client(name)

连接UNIX套接字

localreserved

name

socket_local_client(name)

localabstract

name

socket_local_client(name)

localfilesystem

name

socket_local_client(name)

只于设备上存在的服务:

服务名

参数

创建方式

说明

jdwp

create_jdwp_service_socket

 

track-jdwp

create_jdwp_tracker_service_socket

 

dev

path

unix_open(path)

打开设备文件读写

framebuffer

create_service_thread

(framebuffer_service)

屏幕截图

jdwp

pid

create_jdwp_connection_fd(pid)

 

shell

name

create_subproc_thread(name)

交互控制台

/dev/ptmx

oom_adj=0

sync

create_service_thread

(file_sync_service)

上传下载文件

remount

create_service_thread

(remount_service)

/system 可写

reboot

arg

create_service_thread

(reboot_service, arg)

重启、关机

root

create_service_thread

(restart_root_service)

切换到root权限

backup

arg

backup_service(BACKUP, arg)

系统备份到本地文件(bu)

restore

arg

backup_service(RESTORE, arg)

系统恢复(bu)

tcpip

[port]

create_service_thread

(restart_tcp_service, port)

启动tcp连接模式

usb

create_service_thread

(restart_usb_service)

启动usb连接模式

oom_adj:低内存杀进程策略配置。

Ø 理解和配置 Linux 下的 OOM Killer

/dev/ptmx:伪终端

Ø 浅析terminal创建时ptmx和pts关系

Ø Linux下tty/pty/pts/ptmx详解

Ø Pseudoterminal - Wikipedia, the free encyclopedia

Ø pts(4) -Linux manual page - man7.org

backup:备份工具,源代码位于frameworks/base/cmds/bu。

jdwp:java调试体系

Ø 深入 Java 调试体系: 第 1 部分,JPDA 体系概览

Ø 深入 Java 调试体系,第 4 部分: Java 调试接口(JDI)

Ø 深入 Java 调试体系,第 3 部分: JDWP 协议及实现

Ø 深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现

下面的服务只在主机端存在。

立即完成的请求在handle_host_request中处理,有下列服务:

host开头的:

服务名

参数

处理方法

说明

kill

 

exit

Adb server退出

transport

<serial-number>

acquire_one_transport

切换到远程链路

transport

(|-usb|-local|-any)

 

acquire_one_transport

切换到远程链路

devices

 

list_transports

列出连接设备

devices-l

 

list_transports

列出连接设备

disconnect

[serial]

unregister_transport

断开设备连接

emulator

port

local_connect

模拟器连接,反向创建一个Tcp链路

version

 

ADB_SERVER_VERSION

 

host-prefix开头的:(host-prefix表示host-serial:<serial-number>、host-usb、host-local、host,其中host相对于host-any),处理的时候都要获取链路(acquire_one_transport)。

服务名

参数

处理方法

说明

get-serialno

 

transport->serial

获取设备序列号

get-devpath

 

transport->devpath

获取USB设备连接安装路径

list-forward

 

format_listeners

列出转发端口

killforward-all

 

remove_all_listeners

删除所有转发端口

forward

 

[norebind:]

<local>;<remote>

install_listener

创建转发端口

killforward

<local>

remove_listener

删除转发端口

get-state

 

connection_state_name

设备连接状态

在create_host_service_socket中创建的主机服务有(host开头):

服务名

参数

创建方式

说明

track-devices

 

create_device_tracker

侦听设备连接变化

wait-for-(local|usb|any)

create_service_thread

(wait_for_state, sinfo)

等待设备连接上

connect

host

create_service_thread

(connect_service, host)

连接设备(TCP)

你可能感兴趣的:(android,adb)