赞
踩
adb全称为Android Debug Bridge,就是起到调试桥的作用。顾名思义,adb就是一个debug工具。
不是很理解?那就来看看它的工作原理吧。
上图是一个简单的adb工作原理图。adb客户端服务器端程序,由上图可以看出它主要三个组件组成:Client,Server,Daemon。
(1)当你启动一个adb Client(客户端),Client首先会选确认是否已有一个adb Server(服务器)进程在运行,如果没有,则会启动Server进程。此时,adb Server就会绑定本地的TCP端口5037,并监听adb Client发来的命令。
(2)接着,Server将会扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备,并与之建立连接。一旦Server找到 了adb daemon(守护程序),它将建立一个到该端口的连接,这样,我们就可以使用adb命令控制和访问模拟器或设备了。在这里,需注意的是任何模拟器或设备实例会取得两个连续的端口:一个偶数端口用来相应控制台的连接,和一个奇数端口用来响应adb连接。
借助adb工具,我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。简而言之,adb就是连接Android手机和PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。
(1)Java环境
①到官网下载jdk:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html
②jdk下载完成安装之后配置环境变量,按照如下操作:
按照1,2,3步骤打开系统中属性中的环境变量
按照下图1,2,3步骤,添加JAVA_HOME系统变量(变量名为自己安装JDK的路径)
例如我的安装地址是C:\Program Files\Java\jdk1.8.0_261
按照下图1,2,3步骤,添加CLASSPATH系统变量(注意最前面有个点)
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
最后在path的变量值最后末尾,追加配置 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
按 win + R 键 输入cmd 回车,弹出命令行窗口输入java -version
得到版本号相关信息则表示安装成功。
(2)Android SDK环境
①SDK官方下载地址:https://developer.android.com/studio/releases/platform-tools
②将下载下来的SDK解压后按照下图配置环境变量(这里的变量值为自己解压后的SDK路径)
然后再在path中加入这两条路径即可:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools
最后在cmd中输入adb有如下提示表示安装成功
测试机型的选择:真机、模拟器
(1)连接模拟器(mumu为例)
windows:
- adb connect 127.0.0.1:7555
- adb devides
mac:
- adb kill-server
- adb devices
(2)连接真机(Android手机)设备
①手机端:让手机处于一个调试模式
通过USB数据线连接:
「设置」-「开发者选项」-「Android 调试」查看。开发者选项,点允许usb调试,然后就可以连上电脑了
如果在设置里找不到开发者选项,在「设置」-「关于手机」连续点击「版本号」7 次。
②电脑端安装手机驱动
(3)查看手机状态
- adb devices //以列表形式展示
- adb get-state
(4)设备状态种类
- device //正常
- offline //连接出现异常,设备无响应
- unauthorized //未授权
(1)adb命令格式
adb [-d | -e | -s <serialNumber>] <command>
-d指定当前唯一通过USB连接的android设备为命令目标(了解)
-e指定当前唯一运行的模拟器为命令目标(了解)
-s指定相应的设备为命令目标(重点)
(2)安装
普通安装:adb install <apk安装路径>
覆盖安装/替代安装:adb install -r <apk路径>
(3)卸载应用
adb uninstall 包名
卸载应用(不删除配置文件,保存数据缓存信息) adb uninstall -k 包名
(1)包和Activity(活动页)的概念
package包:是Android应用的唯一标识
Activity活动页:Android应用页面,一个页面就是一个Activity
(2)获取当前的页面名
①打开手机app应用的某个页面
②打开命令行工具执行命令:
adb shell "dumpsys window | grep mCurrentFocus"
如下图:
/前为包名,后为页面名
(3)获取启动页面的activity
- mac:adb logcat ActivityManager:I | grep "cmp"
- win: adb logcat ActivityManager:I | findstr "cmp"
(4)启动页面
命令:adb shell am start -n <包名>/<activity包>
查看目录结构:adb shell ls
查看系统当前日期:adb shell date
查看系统cup使用情况:adb shell cat /proc/cpuinfo
查看系统内存使用情况:adb shell cat /proc/meminfo
显示所有应用:adb shell pm list packages
显示系统自带应用:adb shell pm list packages -s
显示第三方应用:adb shell pm list packages -3
清除应用数据及缓存:adb shell pm clear <包名>
注意:在输入设备路径的时候,尽量在/sdcard目录下,因为这个目录下的文件是可操作的。
(1)日志的级别
(2)查看日志的命令及常用参数
adb命令查看日志:adb logcat
常用的参数:
adb logcat 打印默认日志数据
adb logcat -v time 打印时间
adb logcat -v color 使用不同的颜色来显示每个优先级
adb logcat -f <filename> 将日志输出到文件
adb logcat > x.log 保存日志到pc上
adb logcat -c 清理已存在的日志
(3)根据条件过滤日志
- adb logcat -v time "*:W" //打印Warning及以上级别的日志
- adb ActivityManager:D '*:S' //过滤tag 为ActivityManager,level为Debug及以上级别的日志
模拟点击事件:adb shell tap x坐标 y坐标
模拟输入事件:adb shell input <输入内容>
模拟滑动事件:adb shell swipe <起点x> <起点y> <终点x> <终点y> <滑动时长>
模拟手机按键:
返回键:adb shell input keyvent 4
Home键:adb shell input keyevent 3(置应用于后台运行)
音量放大:adb shell input keyevent 24
音量缩小:adb shell input keyevent 25
查看当前系统CPU使用情况:adb shell dumpsys cpuinfo(adb shell dumpsys cpuinfo 获取的是一个时间段内的平均值,没有adb shell top 的准确)
查看当前系统的内存:adb shell dumpsys meminfo
查看某个应用的内存:adb shell dumpsys meminfo <应用名>
1.adb shell top
2.adb shell top | grep "包名"--查看某个包的一些性能指标
3.adb shell top -d 1 | grep "包名"
2,3中为mac或者Linux的命令,windows的为:
adb shell top | findstr 包名
adb shell top –d 1| findstr 包名
注:(adb top 获取的是实时的性能指标)
命令:adb shell dumpsys battery
命令格式:adb shell --help
adb shell monkey 【参数】 {随机发送事件数}
基本用法:
1.在命令提示符中输入adb devices查看有无连接的设备
2.确认有设备连接
3.获取app包名
4.执行命令:adb shell monkey 【参数】 {随机发送事件数}
monkey打印详细日志:adb shell monkey -v <事件数>、adb shell monkey -v v<事件数>、adb shell monkey -v vv<事件数>
monkey测试停止的条件:
1.指令执行完成
2.遇到崩溃,或者异常
3.杀掉进程
monkey运行某个包:
1.指定一个包:adb shell monkey -p 包名 【事件数】
2.指定多个包:adb shell monkey -p 包名 -p 包名 【事件数】
指定事件时间间隔:
--throttle <milliseconds>:每个事件结束后的事件间隔
adb shell monkey -p 包名 --throttle 时长(秒)
设置种子数:-s <seednumber>:用于指定伪随机数生成器的seed(种子)值
设置事件比列:
1.crash 闪退
2. exception 异常
3.force closed 强制退出
4.anr (application no response)程序无响应
忽略异常:
保存日志:
方式一:adb shell monkey 1000> 文件路径/文件名
方式二:adb logcat -v time '*E' > monkey.log
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。