如何将手下多个Android手机统一管理起来呢,这里是用通过终端输入adb命令来实现控制多个手机的,具体怎么做,接下来给讲一讲。
首先,需要准备一套工具,以下是adb工具套件,是在Android SDK开发包中复制出来的
注意,三个缺一不可,dll是adb依赖的文件
没有的话,可以点此前往网上搜adb工具包
打开手机的设置→开发者选项,开启USB调试功能,然后通过数据线连接上电脑
连接电脑会弹出连接提示的,没有提示的话,你的数据线可能是仅充电用的,
手机上没有找到开发者选项,尝试点此前往可找到解决方案,
个别手机可能需要选择文件传输,才能进入USB调试
连接成功的话,如下图所示,手机通知栏显示“已连接USB调试”那就是正常的
接下来,在电脑上当前存放adb.exe的文件夹根目录下,点鼠标右键,
再点击Open in Windows Terminal
打开终端,如下图所示,试试输入命令
Windows 11 系统 CMD窗口 输入的命令如
./adb devices
…,相比旧版系统,新版的前面需要加./
才行,
列表出现的如 “设备序列号device
” 是表示可连接的,
若为其它如有offline
的话,表示还不能连接,可能要先在手机上的弹窗点允许调试
这里列出一下,常用到的adb命令
命令 | 说明 |
---|---|
adb devices | 显示可连接的USB设备列表 |
adb shell wm size | 获取屏幕分辨率 |
adb shell mkdir /sdcard/文件夹 | 在手机内部存储中创建一个文件夹 |
adb shell screencap -p /sdcard/文件夹/文件名 | 屏幕截图,生成png图片存到指定位置 |
adb pull 手机存储文件位置 电脑的文件夹位置 | 导出文件,把手机的文件导出到电脑上 |
adb shell rm -r 手机存储文件位置 | 删除手机的文件 |
adb shell input tap 10 20 | 模拟点击屏幕位置在坐标 (10,20) |
adb shell input keyevent 4 | 模拟点击按键返回,举例: 4返回;3主页;82菜单;24音量+;25音量-;26电源; |
adb shell input swipe 10 10 10 100 600 | 模拟滑动,其中5个数字分别表示: 开始点坐标X1和Y1,结束点坐标X2和Y2,还有一个是滑动时间ms单位 |
adb start-server | 启动adb服务 |
adb kill-server | 关闭adb服务 |
adb install -r test.apk | 安装(覆盖)test.apk应用 |
adb uninstall test.apk | 卸载test.apk应用 |
adb … | 还有更多… |
在终端输入以上命令试试,熟能生巧,就能记下来
如果只想精确控制其中的一个设备,就需要在adb
后面加一段命令-s <设备序列号>
,
例如这样,获取序列号为AB42342425255 的设备的屏幕分辨率
adb -s AB42342425255 shell wm size
操作输入命令多了是多不方便,
如果你会用Visual Studio开发工具编写一个WinForm项目,就可以开发一个桌面程序来,运行效果如下图这样,
简单操作一下,就能控制连接的手机,可在屏幕点击和滑动操作,
如果手里还有多余的闲置Android手机或平板电脑,都可以通过它来控制
桌面程序是使用C#编程语言编写的,通过Process
对象调用外部adb.exe程序来实现,主要的调用代码如下
//创建一个调用外部adb的进程
var p = new Process();
p.StartInfo.FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "adb.exe");
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
//执行adb命令
adbProcess.StartInfo.Arguments = common;
adbProcess.Start();
var result = adbProcess.StandardOutput.ReadToEnd();
if (string.IsNullOrEmpty(result))
{
result = adbProcess.StandardError.ReadToEnd();
}
adbProcess.WaitForExit();
其中
common
是传入的命令,如"devices",
其中result
是输出命令,可以看到执行后返回的结果,
像通过终端命令的操作一样,就是把常用的命令操作的方法一起封装好,
自己写到桌面程序里,这样用起来就会轻松一些。
注意不用时,已开启的USB调试,最好关闭,以防手机数据被盗或丢失。