ADB结构及代码分析

最近因为需要,看了下adb的源代码,感觉这个作者很牛,设计的很好,于是稍微做了点笔记,方便以后再次需要修改adb时能迅速的回忆起来。


ADB结构及代码分析

一、概述

  Android的整个ADB3个部分组成,ADB ClientADB ServerADB DaemonADBD)。其中ADB Server是作为一个后台服务在运行的,当输入ADB指令时(比如adb devices),实际上就是在运行一个adb clientadb client会去连接adb server127.0.0.1:5037),加入连不上,则认为ADB Server没有启动起来,会自动去fork出一个子进程,并让子进程重新执行adb  fork-server server,从而让ADB Server运行起来,而父进程则会重新尝试连接ADB Server。因此ADB ClientADB Server其实就是同一个程序,只不过是各自用到了ADB的部分功能而已

二、ADB Client功能概述

    ADB Client的作用是连接ADB Server,并将用户输入的指令转发给ADB Server,并等待ADBD或者是ADB Server的应答。对于很多指令,ADB Client都是将指令发送至ADB Server后,就结束了,但是对于一些指令(比如adb  push  LOCAL_PATH  REMOTE_PATH), ADB Server只是充当了一个数据转发的功能,即是ADB ClientADBD通过ADB Server这座桥梁,在不断的进行交互。后面将对adb push 这条指令做一个详细的代码分析

三、ADB Server功能概述

ADB Server是通过adb_main(int is_daemon, int server_port),即adb_main(1,5037)运行起来的。作为一个开在本机的socket服务器,ADB Server等待接收来自ADB Client的请求,并做相应的处理。

ADB Server在启动的时候,会调用函数  void init_transport_registration(void)  初始化一个socketpair,用来注册

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值