日期:2014-05-16  浏览次数:20399 次

手机助手 adb 之间通信 介绍

QQ: 2506314894

研究识别技术已经好久了,对这块的技术以及难点也已经非常清晰,一直想做一些总结,但是总不知道从何说起,简单说一下adb 之间的通信过程。

 

通常我们调用adb.exe devices获取设备,在执行这个命令的时候adb内部做了很多事情,下面讲解一下每一个步骤

1)   判断adb宿主进程是否存在,如果宿主进程存在,则获取进程的版本号转步骤2,如果不存在则步骤4

2)   获取到版本号之后和自身比较,如果自身的版本号不等于宿主进程的版本号,则步骤3.否则步骤5

3)   向宿主进程发送退出命令,等待宿主进程退出,如果宿主进程退出失败,则步骤6,否则步骤4

4)   启动一个adb新进程作为宿主进程,并且给进程发送 start-services命令来启动服务,然周步骤5

5)   给宿主进程发送devices命令,获取设备列表成功

6)   宿主进程退出失败,获取失败

 

一个助手的ADB 程序肯定是不可以随便退出的,否则和手机之间的连接就会断开,助手的功能就会有严重问题,比如正在传输文件,正在获取手机信息的时候adb 意外退出肯定不行,但是默认情况下adb之间的通信协议就是这样的,因此就需要对adb 做一些修改,修改的ADB 需要满足下面的要求

1) 除非是自己的程序发送过来的退出命令,否则对于任何adb 发送的退出命令都不接收。

2) 其他进程向ADB 发生命令的时候需要返回正确的信息。

3) 也不要尝试对其他的adb 进程发送退出命令,除非他的名字就叫adb.exe

4)    google 提供的adb 程序的名称就是adb.exe, 但是你的adb 程序最好改个名字,否则360 助手一起动就会把你干掉。

解决了这些问题,那你的adb 基本就满足使用要求了。