一、adb的工作原理
adb是cs架构,由三部分组成,分别是client,server,daemon,他们的关系见下图
server是整个架构的核心
server负责接收client的指令,然后将指令发送给手机上的daemon
server负责接收daemon的执行结果,然后将结果返回给client
二、adb环境搭建
a、安装java环境,并配置环境变量
b、安装安卓adk,下载路径如下
https://developer.android.com/studio/releases/platform-tools?hl=zh-cn
三、adb的基础使用
1、连接设备
1 2 3 4 5 | adb - d #指定当前唯一通过usb连接的安卓设备作为命令的目标 adb - e #指定当前唯一运行模拟器的安卓设备作为命令的目标 adb - s #指定相应的设备id作为命令的目标 |
2、查看设备的状态
1 2 3 | adb devices #查看当前pc可以查询到的安卓的设备,并可以查看对应的设备的状态 adb get - state #作用同adb devices |
设备的状态有以下几种
device 是属于正常的状态
offline 连接出现异常
unauthorized 设备未授权
3、连接模拟器(这里我们采用网易的木木模拟器)
1 2 | adb_server.exe connect 127.0 . 0.1 : 7555 adb_server shell # 进入对应的安卓设备,我们知道,安卓底层其实也是linux |
4、连接真机,需要有以下条件
a、手机需要进入调试模式(打开开发者模式,打开usb调试)
b、电脑需要安装对应的手机的驱动
c、手机通过usb和pc连接
5、通过adb安装和卸载app
1 2 3 | adb install apk路径 #首次安装 adb install - r apk路径 #覆盖安装 |
1 2 3 | adb uninstall 包名 #卸载,会删除缓存文件和配置文件 adb uninstall - k 包名 #卸载,不删除缓存文件和配置文件 |
6、adb获取当前的页面和启动页面
这里需要给大家介绍2个名词
package包:是安卓应用的唯一标识
Activity活动页:安卓应用的页面,一个页面就是一个activity
a、我们可以先在手机打开一个app
b、执行下面的命令,可以获取包名和当前的activity
1 | adb shell "dumpsys window |grep mCurrentFocus" |
包名:com.taobao.taobao
activity:com.taobao.tao.welcome.Welcome
c、其他查看包名的方法
1 | adb shell pm list packages - 3 #查看当前手机上安装的第三方的应用 |
d、获取到包名和activity后,我们就可以通过adb命令启动某个app的某个页面
1 | 启动页面的命令:adb shell am start - n com.taobao.taobao(包名) / com.taobao.tao.welcome.Welcome(activity名) |
e、上面是获取指定的页面的activity,这里我们介绍下如何获取到启动界面
首先执行下面的命令
1 | 先执行adb命令:adb logcat ActivityManager:I | findstr "cmp" |
然后启动应用,出现的第一个cmp就是启动页
7、adb清理app缓存
1 2 3 4 5 | adb shell pm list packages #获取当前手机上安装的所有应用 adb shell pm list packages - s #获取当前手机上安装的系统应用 adb shell pm list packages - 3 #获取当前手机的第三方应用 adb shell pm clear 包名 #清理的应用的缓存 |
8、adb如何执行安卓的内部命令
1 | adb shell linux命令 |
9、adb命令在pc和手机间传输文件
1 2 3 | adb pull / sdcart / aaaa.txt . / #手机到电脑到 pull文件 adb push "C:\Program Files\python\Scripts\pip.exe" / sdcard / #电脑到手机,push |
四、adb高级用法
1、adb查看日志
a、安卓的日志级别
b、查看日志的命令
1 | adb logcat #默认的每一列的是:日志的时间、父进程、子进程、日志的级别、日志的tag、日志的内容 |
c、查看日志常用参数
d、日志的过滤参数(过滤某个tag的某个级别以上的日志)
1 | adb logcat SntpClient:D "*:S" #过滤SntpClient模块D以及D级别以上的日志 ,*:S的意思是其他的日志都不要显示 |
2、adb模拟按键操作
a、根据坐标来做点击操作
在手机的开发者选项中打开“指针位置”
1 | adb shell input tap x坐标 y坐标(根据坐标点击,点下去抬起来) |
b、input输入框操作
1 | 输入框的输入,鼠标先要放到输入框中:>adb shell input text 13925293887 |
c、滑动操作
1 | 滑动:adb shell input swipe 初始x坐标,初始y坐标,结束x坐标,结束y坐标,滑动用的时间(单位毫秒) |
e、模拟按键操作
1 2 3 4 5 6 | adb shell input keyevent 4 (返回上一步操作) adb shell input keyevent 3 (返回主页) 1 、官方文档使用,后面的命令就会执行通话键:adb shell input keyevent KEYCODE_CALL 2 、官方文档说明,后面的命令就会执行相机键:adb shell input keyevent KEYCODE_CAMERA |
其他按键说明:https://developer.android.com/reference/android/view/KeyEvent
1 | <em id = "__mceDel" ><br><br> 3 、adb获取安卓的性能指标<br><br>a、获取cpu的信息< / em> |
1 | 获取cpu的使用情况:>adb shell dumpsys cpuinfo,后面加包名可以获取应用的资源占用情况 |
b、获取内存的信息
1 | 获取内存的使用情况:>adb shell dumpsys meminfo,后面加包名可以获取应用的资源占用情况 |
c、同样可以查看top命令
1 | adb shell top |
d、获取电池的状态信息
1 | adb shell dumpsys battery |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Max charging current: 20000000 #最大充电电流;mA health: 2 #电池健康状态:只有数字2表示good status: 2 #电池状态:2:充电状态,其他数字为非充电状态 present: true #电池是否安装在机身 level: 81 #电量:百分比 scale: 100 #电池当前可用的百分比 voltage: 4108 #电池电压 temperature: 353 #电池温度,单位是0.1摄氏度 technology: Li - poly #电池种类 |
4、monkey的用法
a、基础命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 1 、添加 100 个事件数:adb shell monkey 100 #会随机选n个应用,然后做各种动作 2 、只对具体的某个某几个app做monkey测试,其中 - p可以写多个,每个可以接一个应用的包名: adb shell monkey - p org.mozilla.firefox 100 3 、设置事件和事件的相隔多少毫秒: adb shell monkey - p org.mozilla.firefox - - throttle 100 100 4 、 - s选项设置种子数,相同的种子数可以做回放seed可以看到本次monkey的种子数: adb shell monkey - p org.mozilla.firefox - s 3456789 - - throttle 100 100 |
b、事件种类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | - - pct - touch 触摸事件<br> - - pct - motion 滑动事件<br> - - pct - trackball 轨迹球事件<br> - - pct - nav 导航事件,比如输入设备上、下、左左、右键<br> - - pct - majornav 主要导航事件,,比如中间键、返回键、菜单键 - - pct - syskeys 系统按键事件,比如HOME键、BACK建、拨号键及音量键<br> - - pct - appswitch: activity之间的切换 - - pct - pinchzoom: 缩放事件 - - pct - rotation 屏幕旋转事件<br> - - pct - flip 键盘事件 - - pct - anyevent 任意事件 |
c、可以设置不同事件类型的比例,这里需要注意(设备的比例要小于等于100%)
d、设置monkey忽略异常
1 2 3 4 5 6 7 8 9 | - - ignore - crashes #忽略奔溃异常 - - ignore - timeouts #忽略超时异常 - - ignore - security - exceptions #忽略安全异常 - - kill - process - after - error #发生错误后直接杀掉进程 - - dbg - no - events #初始化启动的activitye,但是不产生任何事件 - - hprof #指定该项后在事件序列发送前后会立即生成分析报告 - - moitor - native - crashes #跟踪本地方法的奔溃问题 - - wait - dbg #直到连接了调试器才执行monkey测试 - bugreport #当ANR,系统无响应。crash的时候获取bugreport |
e、monkey日志
1 2 3 | adb shell monkey 10 > 文件路径 adb logcat - v time "*E" > 文件路径 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2018-11-19 bs4.BeautifulSoup的基础用法
2017-11-19 Django基础学习六之渲染