您的位置:首页 > 移动开发 > Android开发

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

2014-05-07 13:02 477 查看

服务

响应外部请求,创建服务。服务对外表现形式是套接字(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)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: