android adb 框架,Android学习历程(9):初识adb的架构

Posted: October 28, 2009 |

Version: 0.1 almost

在android平台上写TCP

/UDP的Socket测试程序时,因为不知道把端口重定向到emulator上的端口上,而吃了很多困-_-!于是,今天下午了解一下adb这个工具,发现adb的整个架构很有意思,记录一下:

adb:全称为Android Debug

Bridge,它是一个多用途的工具,可以让你管理模拟器实例或者android设备的状态。简而言之,它是一个调试工具!

adb是一个客户端—服务器程序,它包括三个组件:

1.client:

which runs on your development machine. You can invoke a client

from a shell by issuing an adb command. Other Android tools such as

the ADT plugin and DDMS also create adb

clients.(不过自己捣鼓了一会,也没发现如何在Eclipse中使用adb的借口-_-!明天看一下DDMS再说……)

感性的认识,也就是右边这张图片:

2. server:

which runs as a background process on your development machine.

The server manages communication between the client and the adb

daemon running on an emulator or device.

这里值得一提的是,这里的client和server应该都只是线程的,而不是像我之前所理解的是两个进程。因为在Process

Explorer中,我只找到了一个adb进程。在打开模拟器之前,该进程共有两个线程;而打开了模拟器之后,一共有四个线程,见下面两张图。再次把Eclipse关闭,发现这个adb进程还在:线程为两个,说明这两个应该就是服务器端。

3.daemon(守护进程):

which runs as a background process on each emulator or device

instance.

client与server的连接(当开启adb命令行时):

客户端检查下服务进程是否存在?如果不存在的话,就启动服务进程。然后服务进程绑定到5037端口开始监听客户端的请求。

server与daemon的连接:

server通过扫描5555到5585的奇数端口来定位模拟器实例,一旦在这些端口中找到模拟器中的daemon,就和这个端口建立连接。

server工作的单一性:

虽然server在两端能连接多个client和模拟器,但是一次只能把commands传送给一个模拟器。也就是说,你要操作另外一个模拟器了,你必须用下面的命令来切换(Directing

Commands to a Specific Emulator/Device Instance):

adb -s

结语:

因为觉得adb整个架构还蛮好玩的(从来没写过这种架构的完整程序,以后可以看下adb的源码,应该是开源的吧!),所以就写下了这篇文章,不知道是不是做了一件无聊的事(⊙o⊙)?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值