android adb 流程原理代码分析(一)
由于要用到adb的知识,但是对adb啥也不了解,看了下android的代码,adb的源码在system/core/adb下面,然后网上搜下了资料,发现很多大神的源码分析,瞬间信心爆棚,把大神写的博客都浏览了一遍,然后手动运行了下adb命令,顺便跟踪了下过程,发现原来还是很好的理解,源码的各种线程创建,函数回调,对于我这种基础不咋好的,,还是看的晕晕呼呼,现在把我自己的理解给大家分享,有理解错误的还请多多指正 。 一般直接上代码,可能看官都走了 一大 半 ,我们逆向的看,先看结果,再看过程,最后再看代码。从简单的入手。 理解: (1)adb的本质,就是socket的通信,通过secket传送数据及文件 (2)adb传送是以每个固定格式的包发送的数据,包的格式如下: # define A_SYNC 0x434e5953 # define A_CNXN 0x4e584e43 # define A_OPEN 0x4e45504f # define A_OKAY 0x59414b4f # define A_CLSE 0x45534c43 # define A_WRTE 0x45545257 # define A_AUTH 0x48545541 struct amessage { unsigned command; /* command identifier constant */