adb命令
- 前提条件
手机端开启开发者模式,允许usb调试
adb - Android Debug Bridge 是一个命令行工具。
可以通过 adb 实现手机和电脑之间的交互,如安装app、本地文件推送到手机上。
adb 本地路径(macOS)
where adb
/Users/xx/Library/Android/sdk/platform-tools/adb
adb 原理/流程
adb命令可以干什么(选了常用的一些操作)
- Android开发者网站参考:
https://developer.android.com/studio/command-line/adb?hl=zh-cn
1、查看设备信息
adb devices
List of devices attached
6HJ4C20320018818 device
2、启动/终止adb服务
# 杀掉服务
adb kill-server
# 启动服务
adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully
3、安装/卸载APP
# 安装
adb install apk路径
# 安装debug包,允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=”true” 的应用
adb install -t apk路径
# 覆盖安装,本地缓存数据还存在
adb install -r apk路径
# 卸载
adb uninstall PackageName
# 卸载,但保留数据缓存
adb shell pm uninstall -k PackageName
4、push/pull
# 把PC数据push到手机
adb push pc文件路径 手机路径
# 把手机数据pull到PC
adb push 手机文件路径 PC路径
# 取出anr日志,anr日志->/data/anr/traces.txt
adb pull /data/anr/traces.txt .
5、进入手机shell操作
> adb shell
# 进入sdcard
HWSEA-A:/ $ cd sdcard
# 创建文件夹123
HWSEA-A:/sdcard $ mkdir 123
# 进入123
HWSEA-A:/sdcard $ cd 123
# 创建文件123.txt
HWSEA-A:/sdcard/123 $ touch 123.txt
# 查看路径列表
HWSEA-A:/sdcard/123 $ ls
123.txt
# 退出shell
HWSEA-A:/sdcard/123 $ exit
6、保持屏幕长亮
# 解决问题,部分手机最长熄屏时间30min
# 跑自动化会比较累人,有2种命令:
adb shell svc power stayon usb
or
adb shell settings put system screen_off_timeout 6000000
7、切换输入法
# 查看本机有哪些输入法
adb shell ime list -s
# 切换成讯飞输入法
adb shell ime set com.iflytek.inputmethod/.FlyIME
8、截屏/录视频
- 截屏
# 截屏,存储到/sdcard/xxx.png
$ adb shell screencap -p /sdcard/xxx.png
# 截屏pull到本地路径下
$ adb pull /sdcard/screen.png .
- 录视频
adb shell screenrecord /sdcard/demo.mp4
# 限制录制时间,20s
adb shell screenrecord --time-limit 20 /sdcard/demo.mp4
# 指定视频分辨率大小,1280*720
adb shell screenrecord --size 1280*720 /sdcard/demo.mp4
# 指定视频的比特率,6000000
adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4
# 视频pull到本地路径下
adb pull /sdcard/demo.mp4 .
9、查看手机上APP,对应的apk路径
> adb shell pm path com.tencent.comic
package:/data/app/com.xxx.xxx-K9Kn6fUUkL7dLTEC2fA9Pw==/base.apk
10、adb shell am(activity manager)
# 杀进程
adb shell am force-stop com.xx
# 启动app
adb shell am start -W -n PackageName/xx.xx.MainActivity -S
11、adb shell pm(package manager)
清除缓存数据:
adb shell pm clear PackageName
授予系统权限:
adb shell pm grant PackageName android.permission.READ_EXTERNAL_STORAGE
取消授权:
adb shell pm revoke PackageName android.permission.READ_EXTERNAL_STORAGE
# 设备当前有哪些包
adb shell pm list packages
# 查看包对应安装包路径
adb shell pm path PackageName
# 安装/卸载
adb shell pm install
adb shell pm uninstall PackageName
12、adb shell input
# 滑动,从(0,200)滑动到(200,600)
adb shell input swipe 0 200 200 600
# 点击
adb shell input tap 200 200
13、adb shell monkey
- 一个monkey命令实际应用场景
adb shell monkey
-p PackageName -s 12 --throttle 200
--ignore-security-exceptions
--ignore-crashes
--ignore-timeouts
--pct-touch 20
--pct-motion 30
--pct-appswitch 5
-v-v-v 20000
bugreport 2>error.txt 1>info.txt
说明:
-P //包名 PackageName
-s 12 //随机种子12,当两次命令随即种子数值相同时,重复操作相同的事件序列
--throttle 200 //事件间隔时间200毫秒
--ignore-security-exceptions //忽略安全异常
--ignore-crashes //忽略崩溃
--ignore-timeouts //忽略超时
--pct-touch 20 //触摸事件占比20%
--pct-motion 30 //滑动事件占比30%
--pct-appswitch 5 //activity切换占比5%
-v -v -v //日志记录最详细级别
180000 //产生事件数目为180000
bugreport //当出现ANR/Crash时获取bugreport
2>/sdcard/error.txt //Leve2日志保存到sdcard上的error.txt中
1>/sdcard/info.txt //Leve1日志保存到sdcard上的info.txt中
整体运行时间是:throttle * 事件数 // 200 * 200000
- 在Monkey执行过程中,杀掉Monkey
adb shell ps|grep monkey
//windows,grep换成findstr
adb shell kill monkey_pid
- Monkey 参数说明
项目 | Value |
---|---|
基础参数 | -v //指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0即-v |
↑ | -s //指定产生随机事件种子值,相同的种子值产生相同的事件序列 |
↑ | -p //进行测试的包名 |
↑ | –throttle //每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列),单位毫秒,1s=1000ms |
事件类型 | –pct-touch //指定触摸事件的百分比 |
↑ | –pct-motion //指定滑动事件的百分比 |
↑ | –pct-appswitch //指定activity切换百分比 |
↑ | –pct-trackball //指定轨迹球事件的百分比,该事件不常用 |
↑ | –pct-nav //指定导航事件的百分比,导航事件 up/down/left/right |
↑ | –pct-syskeys //指定系统按键事件的百分比,系统按键事件 Home/Back/startCall/ endCall/volumeControl |
↑ | –pct-anyevent //指定其他类型事件的百分比,如:按键、其它不常用的设备按钮等 |
调试选项 | –hprof //指定该项后在事件序列发送前后会立即生成分析报告,一般建议指定该项 |
↑ | –ignore-crashes //忽略崩溃 |
↑ | –ignore-timeouts //忽略超时 |
↑ | –ignore-security-exceptions //忽略安全异常 |
↑ | –kil-process-after-error //发生错误后直接杀掉进程 |
↑ | –monitor-native-crashes //监视并报告Android系统中本地代码的崩溃事件 |
↑ | –wait-dbg //直到连接了调试器才执行monkey测试 |
↑ | –dbg-no-events //初始化启动的activity,但是不产生任何事件 |
14、adb logcat
adb logcat -c //清空日志缓存
adb logcat -v time //打印出时间,"日期 时间 优先级 / 标签 (进程ID) : 进程名称 : 日志信息
adb logcat |grep xxx //过滤xxx信息,打印出来
adb logcat -t 100 //打印最近10行信息
adb logcat --help //帮助信息,列出所有可用命令
adb logcat -s 标签名 //只打印该标签日志
adb logcat -v time|grep -i androidruntime //打印崩溃日志
15、手机关机重启
adb -s devicesID reboot # 不确定是否有设备限制