adb命令

  • adb 本地路径(macOS)
  • adb 原理/流程
  • adb命令可以干什么(选了常用的一些操作)
  • 1、查看设备信息
  • 2、启动/终止adb服务
  • 3、安装/卸载APP
  • 4、push/pull
  • 5、进入手机shell操作
  • 6、保持屏幕长亮
  • 7、切换输入法
  • 8、截屏/录视频
  • 9、查看手机上APP,对应的apk路径
  • 10、adb shell am(activity manager)
  • 11、adb shell pm(package manager)
  • 12、adb shell input
  • 13、adb shell monkey
  • 14、adb logcat
  • 15、手机关机重启


  • 前提条件
手机端开启开发者模式,允许usb调试

adb - Android Debug Bridge 是一个命令行工具。
可以通过 adb 实现手机和电脑之间的交互,如安装app、本地文件推送到手机上。

adb 本地路径(macOS)

where adb
/Users/xx/Library/Android/sdk/platform-tools/adb

adb 原理/流程

android 屏幕唤醒 adb adb亮屏命令_shell

adb命令可以干什么(选了常用的一些操作)

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   # 不确定是否有设备限制