jck28 - 小柒 - adb常用命令

一,adb介绍

1.1,简介

  • Android Debug Bridge(Android 调试桥)简称 adb
  • Android sdk 中提供的用于管理模拟器或真机状态的工具
  • 命令行工具

1.2,adb 操作手机设备

  • 打开应用
    • adb shell am start -n com.tencent.wework/.launch.LaunchSplashActivity
  • 传输文件
  • 点击,输入,滑动等
  • 硬件操作 返回,回到首页
  • 性能指标

1.3,adb 工作原理

  • 采用了客户端-服务器(C/S)模型,包括三个部分:

1.4,adb 环境搭建与配置

(1) Java 环境安装与配置

(2)Android SDK 环境安装

ANDROID_HOME   D:\adt-bundle-mac-x86_64-20140702\sdk   
PATH   %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

(3)检查是否安装成功

  • adb 回车(或者 adb shell )

二,adb常用命令

2.1 adb 与设备交互

(1)连接模拟器 (mumu 为例)

  • windows:
    • adb connect 127.0.0.1:7555
    • adb devices
  • mac:
    • adb kill-server
    • adb devices

(2)连接真机(android 手机)设备

  1. 手机端:让手机处于一个调试模式
  2. 电脑端安装手机驱动

(3)查看手机设备状态

  • 命令:

    • adb devices
    • adb get-state
  • 设备状态种类

    • device 正常
    • offline 连接出现异常,设备无响应
    • unauthorized 未授权

2.2 adb 安装卸载命令

(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 包名

2.3 adb命令启动页面

(1) 包和 Activity(活动页)的概念

  • package 包:是 Android 应用的唯一标志
  • Activity 活动页: Android 应用页面,一个页面就是一个 Activity

(2) 获取当前的页面名

  • 1、打开手机 app 应用的某个页面
  • 2、打开命令行工具
    • 执行命令: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 <包名>/<avticity名>

2.3 adb清缓存命令

(1) adb shell 应用

  • 查看目录结构:adb shell ls
  • 查看系统当前日期:adb shell date
  • 查看系统 CPU 使用情况:adb shell cat /proc/cpuinfo
  • 查看系统内存使用情况:adb shell cat /proc/meminfo

(2) 查看应用列表

  • 显示所有应用:adb shell pm list packages
  • 显示系统自带应用:adb shell pm list packages -s
  • 显示第 3 方应用:adb shell pm list packages -3

(3)清除应用数据及缓存

  • adb shell pm clear <包名>

2.4 adb文件传输

  • adb push 电脑路径 设备路径
  • adb pull 设备路径 电脑路径
    image

2.5 adb日志操作

(1)日志级别

  • V — 明细 verbose(最低优先级)
  • D — 调试 debug
  • I — 信息 info
  • W — 警告 warn
  • E — 错误 error
  • F — 严重错误 fatal
  • S — 无记载 silent(最高优先级,绝不会输出任何内容)

(2)查看日志

  • adb logcat

(3)查看日志常用的参数

  • adb logcat --help
  • adb logcat [TAG:LEVEL ] [TAG:LEVEL ] …
  • adb logcat 打印默认日志数据
  • adb logcat -v time 打印时间
  • adb logcat -v color 使用不同的颜色来显示每个优先级
  • adb logcat -f <filename> 将日志输出到手机文件,filename为手机文件的路径地址
  • adb logcat > log.log 保存日志到PC上
  • adb logcat -c 清理已存在的日志

三,App压力与性能测试

3.1 adb 模拟手机按键操作

(1)模拟点击事件(打开app)

  • 执行命令: adb shell input tap x坐标 y坐标 (x,y坐标为app对应的坐标)

(2) 模拟输入事件

  • 打开app页面,将鼠标放到对应的输入框处
  • 执行命令: adb shell input text <输入内容>

(3) 模拟滑动事件

  • adb shell input swipe <起点x> <起点y> <终点x> <终点y> <滑动时长>

(4) 模拟手机按键

  • 返回键:adb shell input keyevent 4
  • Home 键:adb shell input keyevent 3(置应用于后台运行)
  • 音量放大:adb shell input keyevent 24
  • 音量缩小:adb shell input keyevent 25

3.2 adb性能分析

###(1) CPU 和内存使用情况

  • 查看当前系统 CPU 使用情况:adb shell dumpsys cpuinfo(查看某一时段内的均值)
  • 查看当前系统的内存:adb shell dumpsys meminfo
  • 查看某个应用的内存:adb shell dumpsys meminfo <应用名>

###(2)top 命令

  1. adb shell top
  2. adb shell top |grep "包名" 查看某个包的一些性能指标
  3. adb shell top -d 1 |grep "包名"

###(3)电池电量

  • 命令:adb shell dumpsys battery
    image

3.3 adb压力测试

(1)Monkey 介绍

  • Monkey 是 Google 提供的一个用于稳定性与压力测试的命令行工具
  • 可以运行在模拟器或者实际设备中
  • 它向系统发送伪随机的用户事件对软件进行稳定性与压力测试

(2) Monkey 基本用法

  1. 在命令提示符中输入 adb devices 查看有无连接的设备
  2. 确认有设备连接
  3. 获取 app 的包名
  4. adb shell monkey [参数] {随机发送事件数}
  5. 最简单的 monkey 命令:adb shell monkey 100

(3) Monkey 常用选项

  • -v :用于指定反馈信息级别,总共分 3 个级别
    • adb shell monkey -v -v -v 10
  • -s <seednumber>:用于指定伪随机数生成器的 seed(种子)值
    • adb shell monkey -s 123 10
  • --throttle <milliseconds>:每个事件结束后的间隔时间
    • adb shell monkey --throttle 300 10
  • -p: 用于约束限制,用此参数指定一个或多个包
    • adb shell monkey -p com.android.browser 10
  • --ignore-crashes:忽略崩溃
  • --ignore-timeouts:忽略超时
  • --ignore-security-exceptions:忽略安全异常
  • --ignore-native-crashes:忽略本地代码导致的崩溃异常
  • --monitor-native-crashes:跟踪本地方法的崩溃问题

(4)Monkey 事件选项

  • --pct-touch:触摸事件
  • --pct-motion:滑动事件
  • --pct-appswitch:activity 之间的切换
  • --pct-pinchzoom:缩放事件
  • --pct-rotation:屏幕旋转事件
  • --pct-flip:键盘事件
  • --pct-anyevent:任意事件
  • 注意:所有类型属性比例加起来不能超过 100

(5) Monkey 日志分析

  1. 程序无响应,ANR 问题:在日志中搜索 “ANR”
  2. 崩溃问题:在日志中搜索 “CRASH”
  3. 其他问题:在日志中搜索 “Exception”