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连接模式 |
Ø 理解和配置 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 |
服务名 | 参数 | 处理方法 | 说明 |
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 | 设备连接状态 |
服务名 | 参数 | 创建方式 | 说明 |
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 源码框架分析(1 系统)【转】
- android adb 源码框架分析(2 角色)【转】
- android adb 源码框架分析(2 角色)
- android adb 源码框架分析(3 传输)
- android adb 源码框架分析(5 客户端)
- android adb 源码框架分析(1 系统)
- Android源码分析(五)-----如何从架构师的角度去设计Framework框架
- Android volley网络框架源码和架构分析
- android-----Volley框架使用ImageLoader加载图片源码分析
- Android网络框架源码分析一---Volley
- android adb源码分析(1)
- 【Android开源项目分析】android轻量级开源缓存框架——ASimpleCache(ACache)源码分析
- 【Android框架】volley源码分析
- Android应用程序绑定服务(bindService)的过程源码分析
- Android源码解析之新进程中启动自定义服务过程(startService)的原理分析
- android的技术分解以及Retrofit源码分析以及MVP框架封装使用
- RPC框架(七)dubbo源码分析--dubbo服务消费者初始化
- android轻量级开源缓存框架——ASimpleCache(ACache)源码分析
- android2.3 View视图框架源码分析之一:android是如何创建一个view的?