adb简要介绍

adb 是一个 C/S 架构的命令行工具,主要由 3 部分组成:

  1. 运行在 PC 端的 Client : 可以通过它对 Android 应用进行安装、卸载及调试
  2. 运行在 PC 端的 Service : 其管理客户端到 Android 设备上 adb 后台进程的连接
  3. 运行在 Android 设备上的 adb 后台进程

ADT/SDK Tools目录下的DDMS、Monitor等工具,都是同样地用到了 adb 的功能来与 Android设备进行交互

adb命令学习

adb命令主要分为三种

  1. adb 命令
  2. adb shell 命令
  3. Linux 命令

- adb命令

一般格式:

adb [-e | -d | -s <设备序列号>] <子命令>

常用adb命令:

adb devices //获取设备列表及设备状态

adb get-state [-s]//获取设备的状态,后面选填设备序列号,可以查询具体设备的状态

adb kill-server //结束adb服务

adb start-server //启动adb服务

adb logcat //**打印 Android 的系统日志(log的筛选和记录后面会再单独拿出来学习)**

adb bugreport //**打印dumpsys、dumpstate、logcat的输出,也是用于分析错误**

adb install [apk文件] //安装应用;覆盖安装是使用 -r 选项

adb uninstall [app包名] //卸载应用;使用 -k 选项,卸载时保存数据和缓存目录

adb pull [设备文件位置] [本地目录] //将 Android 设备上的文件或者文件夹复制到本地

adb push [本地文件位置] [设备目录] //推送本地文件至 Android 设备

adb reboot //重启 Android 设备

- adb shell 命令

adb shell 命令是调用的是 Android 系统中的命令,这些 Android 特有的命令都放在了Android 设备的 system/bin 目录下。

常用adb shell命令:

pm

adb shell pm list package //列出所有的应用的包

adb shell pm list package -s //列出系统应用

adb shell pm list package -3 //列出第三方应用

adb shell pm list package -f //列出应用包名及对应的apk名及存放位置

adb shell pm list package -i [关键字] //过滤关键字,可以很方便地查找自己想要的应用

adb shell pm list package -f -3 -i whatsapp //参数可以组合使用
>> package:/data/app/com.whatsapp-1/base.apk=com.whatsapp  installer=null

adb shell pm path [包名] //列出对应包名的 .apk 位置

adb shell pm list instrumentation //列出含有单元测试 case 的应用,后面可跟参数 -f 

adb shell pm dump [包名] //**列出指定应用的 dump 信息**

adb shell pm install [包名] //安装应用

adb shell pm uninstall [包名] //卸载应用;使用 -k 选项,卸载时保存数据和缓存目录

adb shell pm clear [包名] //清除应用数据

am

adb shell am start [-D | W | P | R | S] [包名] //启动应用
>> 参数:
    -D: enable debugging 打开调试
    -W: wait for launch to complete 等待应用完成启动
    -P <FILE>: like above, but profiling stops when app goes idle //(不懂)
    -R: repeat the activity launch <COUNT> times.  Prior to each repeat, 重复开启应用
    -S: force stop the target app before starting the activity 先停止目标应用,再启动

adb shell am instrument //**启动一个 instrumentation , 单元测试或者 Robotium 会用到**

adb shell am monitor //**监控 crash 与 ANR**

adb shell am force-stop [包名] //结束应用

adb shell am startservice //启动一个服务

adb shell am broadcast //发送一个广播

input

input命令可以向 Android 设备发送按键事件

adb shell input text [文本] //发送文本内容,不能发送中文

adb shell input keyevent [KeyEvent] //发送按键事件

adb shell input tap [x轴] [y轴] //对屏幕发送一个触摸事件

adb shell input swipe [x0] [y0] [x1] [y1] [持续时间] //滑动事件
>> adb shell input swipe 500 500 501 501 2000 //在小的距离内,较长的持续时间内进行滑动,最后表现出来的结果就是长按动作

其他常用adb shell命令

adb shell screencap -p [自定目标目录下的文件名] //截图命令

adb shell screenrecord [自定目标目录下的文件名] //录制命令

adb shell uiautomator dump //执行 UI automation tests , 获取当前界面的控件信息

adb shell ime list -s //列出设备上的输入法

adb shell ime set [输入法包名] //选择输入法

adb shell wm size //获取设备分辨率
  1. 范例:
#adb connect 192.168.6.211  (连接设备)
#adb shell  (修改权限)
#busybox su
#busybox mount -o rw,remount /system
#chmod 777 /system/bin
#exit
#adb push F:/test.txt /system/bin (传送文件)
#reboot (重启设备)