引言本文基于Android官方文档, 以及个人工作的使用经验, 总结下adb的常用用法, 备忘. 1, adb简介adb全名Andorid Debug Bridge. 顾名思义, 这是一个Debug工具. 然而, 为何称之为Bridge呢? 因为adb是一个标准的CS结构的工具, 是要连接开发电脑和你的调试手机的.包含如下几个部分: - Client端, 运行在开发机器中, 即你的开发PC机. 用来发送adb命令.
- Deamon守护进程, 运行在调试设备中, 即的调试手机或模拟器.
- Server端, 作为一个后台进程运行在开发机器中, 即你的开发PC机. 用来管理PC中的Client端和手机的Deamon之间的通信.
2, 常用用法2.1 adb devices列举当前连接的调试设备 $ adb devicesList of devices attachedDU2SSE1467010378 device
2.2 adb logcat打印log信息 指令 | 说明 | 备注 |
---|
adb logcat | 打印log | / | adb logcat -c | 清除手机的log buffer | 有些手机权限控制, 不支持. | adb logcat -b | 打印指定buffer的log信息 | buffer有: main(主log区,默认), events(事件相关的log), radio(射频, telephony相关的log) | adb logcat -v | 格式化输出log | 常用的用adb logcat -v time显示时间 | adb logcat -f | 输出log到指定文件 | |
2.3 adb install/uninstall安装卸载apk // 安装apk时指定apk file路径$ adb install ~/Downloads/mobileqq_android.apk[100%] /data/local/tmp/mobileqq_android.apk pkg: /data/local/tmp/mobileqq_android.apkSuccess// 卸载apk时指定包名$ adb uninstall com.tencent.mobileqqSuccess
2.4 adb pull/push调试设备和开发PC之间拷贝文件. // 拷贝本地文件到调试设备中$ adb push ~/temp/GithubApp.trace /sdcard/[100%] /sdcard/GithubApp.trace// 从调试设备中拷贝文件到本地$ adb pull /sdcard/GithubApp.trace ~/[100%] /sdcard/GithubApp.trace
2.5 adb start/kill-server启动/杀死adb简介中提到的Server端进程. 由于adb并不稳定, 有时候莫名的问题掉线时, 可以先kill-server, 然后start-server来确保Server进程启动. 往往可以解决问题.
2.5 adb shell进入调试设备的shell界面, 此时可以使用调试设备中的很多指令. 下文高阶用法中很多就是. $ adb shellshell@hwH60:/ $
3, 高阶用法3.1 adb connect/disconnect通过wifi进行远程连接手机进行调试的. https://developer./studio/command-line/adb.html#wireless 需先连上usb模式, 开启远程调试模式: $ adb tcpip 5555
3.2 adb shell amam即activity manager. 该命令用来执行一些系统动作, 例如启动指定activity, 结束进程, 发送广播, 更改屏幕属性等. 调试利器. 指令 | 说明 | 备注 |
---|
start | 根据intent指向启动Activity | Intent可以是显示的指向activity, 也可以是ACTION方式, 并且可以添加flag, data等参数信息. | startservice | 启动Service | 可以添加flag, data等参数信息. | broadcast | 发送广播 | 可以添加flag, data等参数信息. | monitor | 启动一个Crash和ANR的监听器 | 如有Crash或ANR会在控制台输出相关信息. | force-stop | 强制停止该包相关的一切 | 传入package name. | kill | 杀死该包相关的所有进程 | 传入package name. | kill-all | 杀死所有后台进程 | | display-size WxH | 改变显示的分辨率 | 例如adb shell am display-size 1280x720, 手机可能不支持. | display-density | 改变显示的density | 例如adb shell am display-density 320, 手机可能不支持. |
3.3 adb shell pmpm即package manager. 用来执行package相关的操作, 例如安装卸载, 查询系统的安装包等. 指令 | 说明 | 备注 |
---|
list packages | 列出满足filter条件的所有包 | | list permissions | 列出该Group的所有权限 | | list features | 查看系统支持哪些feature | 例如蓝牙, wifi, 摄像头等. | install /uninstall | 安装卸载 | | clear | 清除应用数据 | |
3.4 adb shell screencap截屏, 比截屏快捷键更加方便快捷. $ adb shell screencap /sdcard/screen.png$ adb pull /sdcard/screen.png ~/temp[100%] /sdcard/screen.png
3.5 adb shell screenrecord录屏, 做demo的话, 可以很方便的用这个命名录制视频, 然后借助工具将其转换成gif图, 超赞. 如下: screenrecord gif Android4.4及以上系统可用.
2.5 adb shell dumpsys强大的dump工具, 可以输出很多系统信息. 例如window, activity, task/back stack信息, wifi信息等. 探索Activity之launchMode和探索Activity之启动Intent flag和Affinity就是用adb shell dumpsys activity来输出task信息的.
常用dumpsys: 指令 | 说明 | 备注 | 细分参数 |
---|
activity | 输出app组件相关信息 | 还可以用细分参数获得单项内容, 下同. 例如adb shell dumpsys activity activities来获取activity task/back stack信息. | activites, service, providers, intents, broadcasts, processes | alarm | 输出当前系统的alarm信息 | / | / | cpuinfo | 输出当前的CPU使用情况 | / | / | diskstats | 输出当前的磁盘使用状态 | / | / | batterystats | 电池使用信息 | / | / | package | package相关信息, 相当于pm功能的集合 | 输出诸如libs, features, packages等信息 | / | meminfo | 输出每个App的内存使用和系统内存状态 | 可以指定包名, 例如adb shell dumpsys meminfo com.anly.githubapp | / | window | 输出当前窗口相关信息 | / | policy, animator, tokens, windows |
|