写在前面:
因为自己的iOS项目需要和安卓的智能设备通信,因此需要了解adb协议,但是实在是看不进去,只好一个字一个字的敲一遍来帮助自己理解这篇文章。
一.为什么要写这一系列文章
谷歌提供的adb工具很好很强大,但是缺点非常多。首先,对中文的支持非常差,abd的各种命令在处理带有中文路径的时候显得很无力。还有就是adb这个工具本身就存在巨大的缺陷。现在的手机助手里面使用的adb都是经过修改的,最主要的修改就是adb的devices命令返回的设备序列号。这个就是我说的巨大的缺陷之一。还有就是使用adb的方式也不方便,需要启动一个adb进程,然后这个进程和adb的服务器进程通信。明明就是一个普通的socket通信,何必这么麻烦启动一个额外进程,自己写一个也花不了多少时间,我仅仅用了500行代码就搞定了。但是要重写,就必须要了解adb的协议已经发送和接受的命令格式。
二.adb的工作原理
这里从表面上来说一下adb的工作原理。先看一下下面的图:
上面的图分为两部分,第一部分完全是发生在电脑上的。其实就是一台电脑上的socket通信。而第二部分就是电脑和手机之间的socket通信了,这里解释一下这三个东西。