adb 命令与手机控制(提供python测试)
〇. adb下载与安装
1 下载
adb驱动下载地址:https://download.csdn.net/download/lwl223442/12700027
解压后运行adb.exe文件
2安装
解压后运行adb.exe文件,出现如图一界面。
安装时候选择一个容易记住的路径,这个很重要,因为adb驱动没有自动配置环境变量,所以实验时候将adb安装在一个非常容易记住的路径,这里以E:\adb为例。如图一:
图一
安装完成后我们在CMD控制台输入adb是没有反应的,因为我们还没有配置好adb的环境变量,我们可以右键点击我的电脑,选择属性,点击高级系统设置,在高级中点击环境变量。
进入环境变量配置页面之后,在系统变量中找到Path,点击Path再点击编辑,然后将刚才安装adb的路径复制,这里我们是以E:\adb为例的,所以我们将这个路径加入进环境变量中,点击保存。这时候我们再次打开CMD控制台,输入adb,出现如下界面,即为配置成功。如图:
3、 手机与电脑相连
将安卓手机用USB与电脑相连接,在安卓手机上打开开发者模式,并开启USB调试模式,每种安卓手机开启的方法都不一样,这里需要小伙伴自己查询自己型号的手机如何开启开发者模式,以华为 荣耀8手机为例,在设置中找到手机版本号,连续点击5次即可开启开发者模式。如果以上操作没有任何错误,那么在CMD控制台,执行命令 adb devices可显示当前手机连接的端口号。
一. adb 相关命令:
1. 关闭adb服务:adb kill-server
2. 启动adb服务 adb start-server
3. 查询当前运行的所有设备 adb devices
4. 可能在adb中存在多个虚拟设备运行 可以指定虚拟设备运行 -s 虚拟设备名称
5. 重启设备 adb reboot --指定虚拟设备 adb -s 设备名称 reboot
6. 查看日志 adb logcat 清除日志 adb logcat -c
7. 进入linux shell下 adb shell 其中常用的linux命令 cd cat 等等 输入su可以获取超级管理员名称了 要确定是否有哪些命令 进入 system/bin目录 就知道了
8. 传入文件到设备中 adb push 本地文件 远程目录
9. 从设备中拷贝文件到本地 adb -s emulator-5556 pull /data/config.ini d:/
10. 显示当前运行的全部模拟器:
adb devices
11. 安装应用程序:
adb install -r 123.apk
12. 获取模拟器中的文件:
adb pull <remote> <local>
13. 向模拟器中写文件:
adb push <local> <remote>
14. 进入模拟器的shell模式:
adb shell
15. 卸载apk包:
adb shell
cd data/app
rm 123.apk
exit
adb uninstall 123.apk
adb install -r 123.apk
16. 查看adb命令帮助信息:
adb help
17. 删除系统应用:
adb remount (重新挂载系统分区,使系统分区重新可写)。
adb shell
cd system/app
rm 123.apk
18. 获取管理员权限:
adb root
19、复制文件:
复制一个文件或目录到设备:
adb push <source> <destination></destination></source>
如:adb push update.zip /sdcard/
从设备上复制一个文件或目录:
adb pull <source> <destination></destination></source>
如:adb pull /sdcard/update.zip.
20、取得当前运行设备的实例的列表及每个实例的状态:
adb devices
21:adb shell input tap
这条命令模拟Android手机在屏幕坐标(X,Y)处进行了点击操作。
22:adb shell input swipe
这条命令模拟Android手机从屏幕坐标(X1,Y1)滑动到坐标(X2,Y2)的操作。
23、uiautomator dump dump: creates an XML dump of current UI hierarchy 这个命令是用来成成当前界面的UI层次,并用XML格式进行展示 。这样就可以获取各个组件的位置了
注:如果PC要想同时控制多台Android手机,必须在adb 后面添加-s
例如:adb -s 13b6e4c4 shell input tap 400 400
表示对13b6e4c4这台Android手机进行在屏幕上(400,400)坐标位置进行模拟的点击事件。
24. 能看到设备信息就代表设备已经连接成功了,接下来的命令就是adb install 路径+包名.apk
例如我的安装包放在桌面,那么命令就是adb install C:\Users\hyh\Desktop\XXX.apk
*** adb shell uiautomator dump /mnt/sdcard/window_dump.xml 获得手机当前界面的UI信息,生成window_dump.xml
*** adb shell input text “123” 输入text
举例:
1、打开cmd,进入到当前文件夹中,输入命令 adb devices 查看当前与电脑连接的设备(前提是,手机打开usb调试模式),可以查看已连接成功的手机。
2、 若手机成功连接,输入命令 adb shell input tap 100 100 , 表示点击屏幕上坐标为(100,100)的点,如果不知道需要点击的点的具体位置的话可以在手机开发者模式中设置。
二. adb 模拟按键
1. 比如使用 adb shell input keyevent <keycode> 命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 KeyEvent,摘引部分我觉得有意思的如下:
keycode | 含义 |
---|---|
3 | HOME 键 |
4 | 返回键 |
5 | 打开拨号应用 |
6 | 挂断电话 |
24 | 增加音量 |
25 | 降低音量 |
26 | 电源键 |
27 | 拍照(需要在相机应用里) |
64 | 打开浏览器 |
82 | 菜单键 |
85 | 播放/暂停 |
86 | 停止播放 |
87 | 播放下一首 |
88 | 播放上一首 |
122 | 移动光标到行首或列表顶部 |
123 | 移动光标到行末或列表底部 |
126 | 恢复播放 |
127 | 暂停播放 |
164 | 静音 |
176 | 打开系统设置 |
187 | 切换应用 |
207 | 打开联系人 |
208 | 打开日历 |
209 | 打开音乐 |
210 | 打开计算器 |
220 | 降低屏幕亮度 |
221 | 提高屏幕亮度 |
223 | 系统休眠 |
224 | 点亮屏幕 |
231 | 打开语音助手 |
276 | 如果没有 wakelock 则让系统休眠 |
2. input 命令的一些用法举例
电源键
命令:
1 |
|
执行效果相当于按电源键。
菜单键
命令:
1 |
|
HOME 键
命令:
1 |
|
返回键
命令:
1 |
|
音量控制
增加音量:
1 |
|
降低音量:
1 |
|
静音:
1 |
|
媒体控制
播放/暂停:
1 |
|
停止播放:
1 |
|
播放下一首:
1 |
|
播放上一首:
1 |
|
恢复播放:
1 |
|
暂停播放:
1 |
|
点亮/熄灭屏幕
可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕,但如果明确地想要点亮或者熄灭屏幕,那可以使用如下方法。
点亮屏幕:
1 |
|
熄灭屏幕:
1 |
|
三、使用python脚本自动运行cmd 命令
本节请先参考https://blog.csdn.net/lwl223442/article/details/101169348完成平台搭建
在adb文件夹下建立一个python文件
1 2 |
|
运行脚本,发现与在命令行输入相同语句有同样的效果。
2、也可以使用subprocess.Popen,最简单使用方式如下,设置shell=True,就不会弹出cmd框
1 |
|
程序实例:
请先下载游戏部落冲突可直接观察效果,当然不下载也可以,只会看见手机屏幕会动不知道干了啥。
import os class traintroops: def get_screen_size(*args): def pointtrainhuangmao(*args, t=2500, n=1): def pointtrainjuren(*args, t=1500, n=1): def pointtrainzhadanren(*args, t=1200, n=1): def pointtraingongjianshou(*args, t=2500, n=1): def pointtraingebulin(*args, t=2500, n=1): # 获取的截图文件在手机中的保存位置(默认保存在内置存储根目录下) # 文件保存在电脑中的目录 def __init__(self, andriod="", trans=""): def getPhoneScreen(self): def transPhoneScreen(self): # 模拟点击某一位置 # 获取屏幕分辨率 # 点击进攻按钮 def pointexittrain(self): |
对上面程序的测试
from Train_Troops import traintroops
from Train_Troops import pointtrain
class a:
pointtrain = pointtrain()
def b(self):
print("zjdkgnhoidgnoaigd")
def train(self):
# self.showAdvice()
# 获取屏幕分辨率
self.pointtrain.getPhoneResolution()
print("点击训练")
self.pointtrain.pointtrainBtn()
print("点击训练黄毛")
traintroops.pointtrainhuangmao()
print("点击训练巨人")
traintroops.pointtrainjuren()
print("点击训练炸弹人")
traintroops.pointtrainzhadanren()
print("点击训练弓箭手")
traintroops.pointtraingongjianshou()
print("点击训练哥布林")
traintroops.pointtraingebulin()
print("点击推出训练")
self.pointtrain.pointexittrain()
find = a()
find.train()
注:详细请参考https://github.com/mzlogin/awesome-adb/blob/master/README.md#usb-%E8%BF%9E%E6%8E%A5
结束
adb 命令与手机控制(提供python测试)相关推荐
- adb命令打开手机设置页面
adb命令打开手机设置页面 设置主页面 adb shell am start com.android.settings/com.android.settings.Settings 安全 adb she ...
- [获取手机信息]-通过 ADB 命令获取手机信息
################################################## 目录 通过 ADB 命令获取手机信息 ADB 常用查看命令 使用 -l 查看设备详细信息 查看机型 ...
- adb 命令让手机不进入休眠
adb 命令让手机不进入休眠 svc power stayon true
- 使用adb命令从手机传文件到电脑
使用adb命令从手机传文件到电脑,比如视频.apk.文档.压缩包等.举个例子:把视频文件test.flv发送到mac本/Users/lz目录下,并修改为good.flv ,具体命令如下: adb pu ...
- 使用adb命令对手机屏幕截图
使用adb命令对手机屏幕截图 使用 screencap 命令,截图保存在 sdcard/01.png adb shell screencap -p /sdcard/01.png 导出 sdcard/0 ...
- adb查看手机cpu使用率_使用adb命令查看手机cpu/内存等信息
使用adb命令查看手机cpu/内存等信息 前提 本地电脑Windows已安装ADB工具.夜神模拟器 连接手机 这里用的夜神模拟器连接的 使用adb命令连接手机:adb connect 127.0.0. ...
- 使用ADB命令连接手机、发送广播
今天说一下ADB命令中的一些Android开发中常用的命令,如果不懂什么是ADB或者使用ADB命令后出现提示"不是内部命令"等问题的请百度一下.安装好环境后我们就开始吧! 首先我们 ...
- adb命令删除手机密码设置
Sino16918 首先介绍一下什么叫ADB命令: ADB的全称为Android Debug Bridge,就是起到调试桥的作用.ADB是android sdk(Android专属的软件开发工具包)里 ...
- 删除苹果自带软件后果_使用adb命令删除手机软件(包括系统自带)
好多人不知道怎么使用ADB命令来删除手机软件(包括系统自带软件),所以今天写篇文章教大家.如本文有出错或你有更好的方法,也可以评论区留言 提前准备: 1.准备好手机.电脑.数据线 2.下载安装相关软件 ...
最新文章
- 独家 | 手把手教你从有限的数据样本中发掘价值(附代码)
- windows 常用工具
- Windows如何查看端口占用
- 【BZOJ1797】[AHOI2009]最小割(网络流)
- 第二天matplotlib绘图
- log4j不生成日志文件的问题
- 案例研究 路由器到路由器EOMPLS---基于端口
- 恒生电子:收购Summit中国区业务
- Linux部署Web项目小记
- Palabos源码:computeEquilibrium(iPop, rhoBar, j, jSqr)的过程
- web文件上传思路(一句话muma)
- [bzoj4453]cys就是要拿英魂!
- VIVO应用市场APP上架总结
- 读科研经费陷“无底黑洞”有感
- Types of Data
- 【机器人基础】机器人阻抗控制概念
- 机器人门禁控制盒怎么接线方法_门禁系统接线方法
- Android开发者选项——GPU呈现模式分析
- 小猫爪:S32K3学习笔记04-S32K3之LCU
- android 手机内存64实际不到,为什么你的手机内存总是达不到64G?丢失的内存去哪了?详细解读...
热门文章
- [Unfinished] 28_α = β_Direct_Current_Non_Loop_Curren
- Java面向对象设计多态特征理解
- 关键字和关键字优化(转)
- 服务器空间不足的解决方法
- Android [USB]MTP的介绍?驱动如何安装?
- Java 开发在线客服系统源码,企业网站官网客服系统源码,网页版聊天咨询客服源码
- GridView 72般绝技 转自清清月儿
- a king读后感 love of the_英语阅读读后感
- Hadoop权威指南(第3版) 修订版(带目录书签) 中文PDF--高清晰
- 微软认证最新技术技巧