Android adb你真的会用吗()

壮心未与年俱老,死去犹能作鬼雄。这篇文章主要讲述Android adb你真的会用吗?相关的知识,希望能为你提供帮助。
前言
本文基于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
列举当前连接的调试设备
Android adb你真的会用吗()

文章图片

2.2 adb logcat
打印log信息
指令 说明 备注
adb logcat 打印log /
adb logcat -c 清除手机的log buffer 有些手机权限控制,不支持
adb logcat -b< buffer> 打印指定buffer的log信息 buffer有: main(主log区,默认),
events(事件相关的log),
radio(射频, telephony相关的log)
adb logcat -v< format> 格式化输出log 常用的用adb logcat -v time显示时间
adb logcat -f< filename> 输出log到指定文件 /
2.3 adb shell  -> cd data/data/-> ls
获取所有应用包名
Android adb你真的会用吗()

文章图片

2.4 adb install/uninstall
安装卸载apk
Android adb你真的会用吗()

文章图片

2.5 adb pull/push
调试设备和开发PC之间拷贝文件
// 拷贝本地文件到调试设备中
Android adb你真的会用吗()

文章图片


// 拷贝本地文件到调试设备中

Android adb你真的会用吗()

文章图片

2.6 adb start/kill server
启动/杀死adb简介中提到的Server端进程.
由于adb并不稳定, 有时候莫名的问题掉线时, 可以先kill-server, 然后start-server来确保Server进程启动. 往往可以解决问题。
3.高阶用法
3.1 adb connect/disconnect
通过wifi进行远程连接手机进行调试的.
https://developer.android.com/studio/command-line/adb.html#wireless
需先连上usb模式, 开启远程调试模式:
$ adb tcpip 5555
3.2 adb shell am
am即activity manager.
该命令用来执行一些系统动作, 例如启动指定activity, 结束进程, 发送广播, 更改屏幕属性等. 调试利器.
指令说明备注
start < Intent> 根据intent指向启动Activity Intent可以是显示的指向activity, 也可以是ACTION方式, 并且可以添加flag, data等参数信息.
startservice < Intent> 启动Service 可以添加flag, data等参数信息.
broadcast < Intent> 发送广播 可以添加flag, data等参数信息.
monitor 启动一个Crash和ANR的监听器 如有Crash或ANR会在控制台输出相关信息.
force-stop < Package> 强制停止该包相关的一切 传入package name.
kill < Package> 杀死该包相关的所有进程 传入package name.
kill-all 杀死所有后台进程  
display-size WxH 改变显示的分辨率 例如adb shell am display-size 1280x720, 手机可能不支持.
display-density < dpi> 改变显示的density 例如adb shell am display-density 320, 手机可能不支持.

3.3 adb shell pm
pm即package manager.
用来执行package相关的操作, 例如安装卸载, 查询系统的安装包等.
指令说明备注
list packages < Filter> 列出满足filter条件的所有包  
list permissions < Group> 列出该Group的所有权限  
list features 查看系统支持哪些feature 例如蓝牙, wifi, 摄像头等.
install < Path> /uninstall < Package> 安装卸载  
clear < Package> 清除应用数据  
3.4 adb shell screencap
截屏, 比截屏快捷键更加方便快捷.
Android adb你真的会用吗()

文章图片

3.5 adb shell screenrecord
录屏, 做demo的话, 可以很方便的用这个命名录制视频, 然后借助工具将其转换成gif图, 超赞. 如下:
Android adb你真的会用吗()

文章图片
 
Android4.4及以上系统可用.

  3.6 adb shell dumpsys
强大的dump工具, 可以输出很多系统信息. 例如window, activity, task/back stack信息, wifi信息等.
探索Activity之launchMode和探索Activity之启动Intent flag和Affinity就是用adb shell dumpsys activity来输出task信息的.
【Android adb你真的会用吗()】常用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

    推荐阅读