这篇文章主要介绍在windows 程序中使用adb 的方法,不介绍adb 的命令。
1) 启动adb 进程,从管道获取输出。
这种方式的弊端有多少,我也不知道,反正就是各种问题吧。但是目前我问过很多朋友,他们都是这么做的,因为这种方法最简单。弊端我列举一下
1) 每次执行一个adb 命令都要启动一个adb 进程,速度太慢,好像就是很不爽
2) 偶尔发现进程管理器中有N 多个adb 进程,然后就卡了。
3) 从管道获取输出,在很多情况下会发现adb 卡死了,进程退不出来。
4) 曾经发现 adb 进程正常启动退出,但是管道就是没有数据。具体原因我现在还不知道。
2) 市面上手机助手使用方式
现在的手机助手无论你怎么搞,在正常情况下都不会出现多个adb 进程,只会有一个adb 的服务进程。我大胆猜测一下,应该是应用程序直接和adb 的服务进程通信,然后直接通过socket 接收数据。
第一种方式启动一个adb 进程,这个adb 进程通过socket 和服务进程通信,把命令发送给服务进程,服务进程接收到命令并且执行,之后把结果通过socket 返回给adb 进程,adb 进程把结果写入管道,然后自己退出了。 因此我们自己可以直接和adb 的服务进程通信,自己的应用程序里面通过socket 给服务进程发送消息。这样速度很快而且也可以避免第一种方式的弊端。但是这种方式也是比较困难,需要自己实现socket 通信
我自己修改了adb 进程,做了很大的优化,并且写了一个lib,这个库封装了和adb 服务进程通信,这个库有一个函数直接调用就可以执行adb 命令。程序只需要静态链接这个库,然后调用一个函数就可以了。
ExecuteADBCommand("devices",strOut);
详细可以了解qq: 2506314894
android adb 的各种使用方式详解,布布扣,bubuko.com