目录
一、adb用法大全图
二、adb是什么,学习它有什么意义?
三、常用adb 命令
四、常用 adb shell 命令
五、参考资料
一、adb用法大全图
二、adb 是什么,学习它有什么意义?
adb 其实就是 Android Debug Bridge, Android 调试桥的缩写,adb 是一个 C/S
架构的命令行工具,主要由 3 部分组成:
运行在 PC 端的 Client : 可以通过它对 Android 应用进行安装、卸载及调试
Eclipse 中的 ADT、SDK Tools 目录下的 DDMS、Monitor 等工具,都是同样
地用到了 adb 的功能来与 Android 设备进行交互。
PC 端的手机助手,诸如 360 手机助手、豌豆荚、应用宝等,其除了安装第三
方应用方便,其他的功能,基本上都可以通过 adb 命令去完成,这里建议
尽量不要在电脑上安装这类手机助手,因为其自带的 adb 程序可能会
与 Android SDK 下的 adb 程序产生冲突,5037 端口被占用,导致使用 adb
命令时无法连接到设备
运行在 PC 端的 Service : 其管理客户端到 Android 设备上 adb 后台进程的
连接
adb 服务启动后,Windows 可以在任务管理器中找到 adb.exe 这个进程
运行在 Android 设备上的 adb 后台进程
执行 adb shell ps | grep adbd ,可以找到该后台进程,windows 请
使用 findstr 替代 grep
这个进程是需要用户手动开启,打开方法:
1、在手机设置 → 关于手机 → 版本号 点击多次,直到提示已进入开发这
模式 ,然后退出这个页面,
2、手机设置→ 开发者选项 → 打开usb调试
学习的意义针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb
命令熟记于心, 将会为 Android 测试带来很大的方便,
其中很多命令将会用于自动化测试的脚本当中。
三、常用adb 命令
在终端输入 adb(配置好环境变量情况下) 或者 adb help,会自动弹出常用的
adb 命令列表,如图
重启adb服务
adb kill-server , adb start-server , 结束 adb 服务, 启动 adb 服务,通常两个命令
一起用
一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用
kill-server,然后运行 start-server 进行重启服务
查看日志
adb logcat
Android 的日志分为如下几个优先级(priority):
V —— Verbose(最低,输出得最多)
D —— Debug
I —— Info
W —— Warning
E —— Error
F —— Fatal
S —— Silent(最高,啥也不输出)
如: adb logcat -s 标签名 只查看对应标签名日志
adb logcat *:d 只查看 D级别以上的日志
adb logcat *:d 标签名 只查看 D级别以上制定标签名的日志
安装、卸载应用
adb install 安装包路径 安装应用,覆盖安装是使用 -r 选项
如 adb install -r /Users/cbf/TCL/Demo/app/build/outputs/apk/app-debug.apk
(安装包名称尽量使用英文)
adb uninstall 对应包名 卸载应用 adb uninstall com.taobao.taobao (卸载淘
宝)将 Android 设备上的文件或者文件夹复制到本地
adb pull <remote> <local> 如将 sdcard 目录下 pull.txt 文件拷贝到 D 盘: adb
pull sdcard/pull.txt d:
推送本地文件至 Android 设备
adb push <local> <remote> 如:
adb push d:push.txt sdcard/ 注意: sdcard 后面的斜杠不能少,否则会出现下面
错误failed to copy 'push.txt' to 'sdcard': Is a directory
获取管理员权限
adb root
重现挂在手机文件系统为可读写状态
adb remount
adb root , adb remount 一般你想pull某个文件夹到电脑里,或者拷贝某个文件到
手机某个目录下,提示你没有读写权限时,使用这个两个命令重现挂载系统文件
夹为可读写状态
重启手机
adb reboot
查看bug报告
adb bugreport , 打印dumpsys、dumpstate、logcat的输出,也是用于分析错误
android 7.0以后手机才能用,输入命令比较多,建议重定向到一个文件中
adb bugreport > d:ugreport.log
获取设备的状态
adb get-state 设备的状态有 3 钟,device , offlfline ,
unknown device:设备正常连接
offlfline:连接出现异常,设备无响应
unknown:没有连接设备
四、常用 adb shell 命令
adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录
下,大家可以通过进入到该文件夹下,通过cat 命令发现这些其实都是通过shell 来
实现的. 如cat am
1. 按键事件
input text <string> input a string to device
input keyevent <event_code> send a Key Event to device
如: adb shell input keyevent 26 (PowerKey)
input tap , 对屏幕发送一个触摸事件
adb shell input tap 500 500 点击屏幕上坐标为 500 500 的位置
input swipe , 滑动事件
adb shell input swipe 900 500 100 500
从右往左滑动屏幕
如果版本不低于 4.4 , 可以模拟长按事件
adb shell input swipe 500 500 501 501 2000
其实就是在小的距离内,在较长的持续时间内进行滑动,最后表现出来的结果就
是长按动作
到这里会发现,MonkeyRunner 能做到的事情,通过 adb 命令都可以做得到,如
果进行封装,会比 MR 做得更好。
2. am命令
am start <INTENT> : start an Activity
如 : am start -n com.android.calculator/com.android.calculator2.Calculator
这里有个小技巧,如果事先不知道应用的包名和 activity的名称,进入到应
用界面然后通过命令
adb shell dumpsys activity activities | grep mFocusedActivity 查看前台activity获
取activity名称。
am broadcast <INTENT> 发送一个广播 am startservice <INTENT> 启动一个服务
am force-stop <PACKAGE> 结束应用
am kill <PACKAGE> 结束应用
am kill-all
am start , 启动一个 Activity,已启动系统相机应用为例
启动相机
$ adb shell am start -n com.android.camera/.Camera
先停止目标应用,再启动
$ adb shell am start -S com.android.camera/.Camera
等待应用完成启动
$ adb shell am start -W com.android.camera/.Camera
启动默认浏览器打开一个网页
$ adb shell am start -a android.intent.action.VIEW -d http://www.baiddu.com
启动拨号器拨打 10086
$ adb shell am start -a android.intent.action.CALL -d tel:10086
更多詳细用法请见am 使用帮助.
还有很多的选项,自己多多发掘~~
3. pm 命令
pm list packages
-f: see their associated fifile 列出应用包名及对应的apk名及存放位置
-s: fifilter to only show system packages 列出系统应用
-3 ilter to only show third party packages 列出第三方应用
pm list packages [-f] [-d] [-e] [-s] [-e] [-u] [FILTER]");
pm list permission-groups
pm list permissions [-g] [-f] [-d] [-u] [GROUP]");
pm list instrumentation [-f] [TARGET-PACKAGE]"); 列出含有单元测试 case
的应用
pm list features
pm list libraries
pm path PACKAGE 列出对应包名的 .apk 位置 如列出qq对应apk的位置
adb shell pm path com.tencent.mobileqq
pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH 安装
android设备里的apk文件 如 pm install /sdcard/1111.apk
pm uninstall [-k] PACKAGE 根据包名 卸载apk
pm clear PACKAGE 根据包名清楚应用数据
pm enable PACKAGE_OR_COMPONENT
pm disable PACKAGE_OR_COMPONENT
pm disable-user PACKAGE_OR_COMPONENT
pm set-install-location [0/auto] [1/internal] [2/external] 设置应用安装位置
pm get-install-location 获取应用安装位置
参数组合使用,例如,查找三方应用中 qq 的包名、apk存放位置、安装来
源:
adb shell pm list package -f -3 -i qq
package:后是apk的路径地址 = 后面是包名 install = 代表来源 这里null 表示
是未知来源
更多詳细用法,请见pm使用帮助.
4、screencap 截图命令
adb shell screencap -p /sdcard/screen.png
截屏,保存至 sdcard 目录
5、screenrecord 4.4 新增的录制命令
adb shell screenrecord sdcard/record.mp4
6. dumpsys
dumpsys activit
dumpsys activity intents
dumpsys activity broadcasts
dumpsys activity providers
dumpsys activity services
dumpsys activity activities
dumpsys activity processes
dumpsys window
dumpsys window windows
dumpsys window tokens
dumpsys window sessions
dumpsys window policy
dumpsys window input
dumpsys statusbar
dumpsys notifification
dumpsys package [<PACKAGE> ]
dumpsys location
dumpsys alarm
dumpsys connectivity
dumpsys wififi
…....等等
7. ime 输入法管理
ime list [-a] [-s]
list command prints all enabled input methods
-s option to see only a single summary line of each.
-a option to see all input method
五、参考资料
http://www.cnblogs.com/bravesnail/articles/5850335.html
https://github.com/mzlogin/awesome-adb (很全面)