如何将手下多个Android手机统一管理起来呢,这里是用通过终端输入adb命令来实现控制多个手机的,具体怎么做,接下来给讲一讲。
使用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
从桌面程序操作控制手机
操作太麻烦,不想输入命令,
那就开发一个桌面程序来,如下效果图,
简单操作一下,就能控制3个手机了,可在屏幕点击和滑动操作,
能控制3个以上,如果你手里还有多余的闲置Android手机或平板电脑,都可以通过它来控制
这个桌面程序是用Visual Studio开发工具编写而成的,是一个WinForm项目,
项目中是通过Process
对象调用外部adb.exe程序来实现的,使用C#编程语言,
主要的调用代码如下
//创建一个调用外部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调试,最好关闭,以防手机数据被盗或丢失。
关于项目源码,在资源一栏下可找到,【资源下载点击这里】