在电脑端的很多与 Android 手机进行通讯交互的工具,都是通过 adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll 三金刚来进行的。程序/脚本中调用的是 adb.exe,把命令和数据以命令行参数的方式附上。看着就不太专业,而且 adb.exe 本身还会以 C/S 架构通讯,感觉又慢了一轮。
有没有办法高效、直接一点?在 CSDN 上看到一篇文章:《Python 调用 DLL 实现部分 ADB 功能》,其实它是我大概浏览了一下 AdbWinApi.dll 的源码,不知道入手点,找了一个导出函数 AdbEnumInterfaces 的名字为关键字搜出来的(源码里的导出函数在 def 文件里不体现,要看函数原型上的修饰)。
总体上来说,应该说是没有什么前人总结过的文档可用。但你要硬找,倒也不是完全光秃秃。比如,在老牌的技术文章分享站 codeproject 上有一个提问《Is there an interface document about adb(adbwinapi.dll and adbwinusbapi.dll)?》可以看看,其中特别提到另一篇文档《Better documentation of the ADB protocol, specifically for USB uses》。CSDN 上还有一篇《adb winapi 初始化流程》,一篇《用 adbWinApi 检测系统中是否存在 ADB 接口》。另有一篇原始在 360 播报里的文章《如何代码实现给 fastboot 发消息? 逆向 aftool 工具纪实》。
水平好、肯花功夫的,大概都可以把两个 DLL 的源码集成到自己的项目里去的,有人也把项目代码独立出来了,见此 Github 仓库。