adb host 和 adbd

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lf12345678910/article/details/79196039

       1、在HOST端,adb会fork出一个守护进程(不是adbd),即server,而父进程继续处理client请求,所有的client通过TCP端口号5037进行与server通信,而server创建local socket与remote socket,前者用于和client通信,后者用与远端进行通信,emulator通过TCP,real device则通过usb。

       2、在emulator/device端,adbd也创建local socket和remote socket,前者与通过jdwp与Java虚拟机进层通信,后者通过TCP/USB与HOST通信。

       因此整个流程应该是这样的:

       1、client调用某个adb命令。

       2、adb进程fork出一个子进程作为server。

       3、server查找当前连接的emulator/device。

       4、server接收到来自client请求。

       5、server处理请求,将本地处理不了的请求发给emulator/device。

       6、位于emulator/device的adbd拿到请求后交给对应的java虚拟机进程。

       7、adbd将结果发回给server。

       8、server讲结果发回给client。

扫描二维码关注公众号,回复: 6244925 查看本文章

       如下图:

猜你喜欢

转载自blog.csdn.net/lf12345678910/article/details/79196039