日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

adb通信协议分析以及实现(二):adb服务进程发现设备

發布時間:2025/7/14 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 adb通信协议分析以及实现(二):adb服务进程发现设备 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? adb服務進程一個重要的功能就是查找設備,當插入一個android設備,并且成功安裝手機驅動后,adb的服務進程就可以發現設備,當adb進程使用devices命令的時候,服務進程把自己保存的設備列表返回給adb進程。這里解釋一下,adb進程和adb服務進程。其實這兩個東西是一個exe文件,僅僅是在啟動的時候通過不同的命令行來區別。這里貼一下adb的代碼,就能更好的理解adb服務進程了。

1)進程啟動之后,經過各種的初始化之后,進入了adb_commandline函數。這個函數是用來處理所有的命令行:


2)之后解析命令行,其中就有一個關鍵的命令:


3)在第二步設置了標志之后,后面就是進入了一個死循環,然后這個服務進程就一直在后臺了:



下面是adb_main函數中代碼片段,有一個死循環,一直在查找設備:


主線程的死循環里面很簡單,就是從消息隊列獲取消息,處理之后轉發等等:


以上就是adb服務進程啟動的一個大致的過程,adb服務進程在啟動過程中會做比較多的事情,下面列舉一些重要的事件:

1)啟動一個線程,每隔1s掃描一下設備:


函數里面啟動一個線程:


線程的實現代碼,find_devices函數內部再遍歷設備,把新設備加入到設備列表中:


接下來重點說一下find_devices函數里面的一個細節,前一篇文章說到設備序列號,很多手機的序列號是一樣的,就會導致同時插入多個手機的時候區分不開始哪個手機。由于序列號相同,所以執行adb命令的時候就不知道發給哪個手機了。這個過程涉及到USB接口的操作,谷歌的代碼里面有一套adbwinapi,其實里面就是用的windows的setupapi函數而已:



可以根據接口來做一個變換,因為每個硬件的接口是唯一的,所以可以根據這個接口來變換,然后返回即可。buffer是保存的序列號,只要把你需要的序列號寫入這個緩存就可以。buffer_char_size這個參數緩存的是長度。不要越界了。

adb通信協議分析以及實現(一):www.jianshu.com/p/713c7823d…

adb通信協議分析以及實現(二):www.jianshu.com/p/4bdd315a9…

adb通信協議分析以及實現(三):www.jianshu.com/p/23581d48f…

adb通信協議分析以及實現(四):www.jianshu.com/p/639fd2155…

轉載于:https://juejin.im/post/5a30f67f6fb9a045204c370a

總結

以上是生活随笔為你收集整理的adb通信协议分析以及实现(二):adb服务进程发现设备的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。