Android中ADB命令用法大结局

2020-10-30 10:43:19 浏览数 (1)

前言

说到 ADB 大家应该都不陌生,即 Android Debug Bridge,Android调试桥,身为 Android 开发的我们,熟练使用 ADB 命令将会大大提升我们的开发效率。

查看版本

ADB 的安装这里就不多说了,输入以下命令有如下提示就证明你环境ok,否则自行网上搜索解决下。

代码语言:javascript复制
$ adb version

Android Debug Bridge version 1.0.36
Revision 8f855a3d9b35-android

ADB 的命令有很多,今天就来总结下我在开发常用到的一些 ADB 命令。

ADB命令

1、查看最上层成activity名字:

代码语言:javascript复制
adb shell dumpsys activity | findstr "mFocusedActivity" 
或者 adb shell dumpsys window w | findstr / | findstr name=

2、查看Activity的任务栈:

代码语言:javascript复制
 adb shell dumpsys activity activities

3、显示所有的activities的信息,包括任务栈等:

代码语言:javascript复制
adb shell dumpsys activity

4、查看Android应用包名package和入口activity名称 :

代码语言:javascript复制
aapt dump badging E:apkes3.apk

5、显示accounts信息:

代码语言:javascript复制
adb shell dumpsys account

5、显示CPU信息 :

代码语言:javascript复制
adb shell dumpsys cpuinfo

查看CPU使用信息

代码语言:javascript复制
adb shell top -n 1 -d 0.5 | findstr proc_ id

6、显示键盘,窗口和它们的关系

代码语言:javascript复制
 adb shell dumpsys window

当我们需要知道设备的分辨率时

代码语言:javascript复制
 adb shell dumpsys window displays

查看UI绘制的各个层级信息

代码语言:javascript复制
adb shell dumpsys SurfaceFlinger

7、显示wifi信息

代码语言:javascript复制
adb shell dumpsys wifi

8、电量信息及CPU 使用时长

代码语言:javascript复制
 adb shell dumpsys batteryinfo $package_name

9、获取安装包信息

代码语言:javascript复制
adb shell dumpsys package packagename

10、每个应用的启动次数和时间

代码语言:javascript复制
adb shell dumpsys usagestats

11、显示状态栏相关的信息

代码语言:javascript复制
adb shell dumpsys statusbar

12、内存信息(meminfo package_name or pid 使用程序的包名或者进程id显示内存信息)

代码语言:javascript复制
 adb shell dumpsys meminfo

得到com.teleca.robin.test进程使用的内存的信息 adb shell dumpsys meminfo com.teleca.robin.test

13、磁盘相关信息

代码语言:javascript复制
adb shell dumpsys diskstats

14、电池相关信息

代码语言:javascript复制
adb shell dumpsys battery

15、显示Alarm信息

代码语言:javascript复制
adb shell dumpsys alarm

统计系统耗电量

代码语言:javascript复制
adb shell dumpsys batterystats

设置线程的优先级

代码语言:javascript复制
adb shell dumpsys activity|grep oom_adj 

16、强制关闭一个应用程序;

代码语言:javascript复制
 adb shell am force-stop <PACKAGE 

17、查看内存信息

代码语言:javascript复制
adb shell cat proc/meminfo

指定进程内存地址映射

代码语言:javascript复制
adb shell cat proc/pid/maps

指定进程内存详细使用信息

代码语言:javascript复制
adb shell cat proc/pid/smaps

VSS. RSS. PSS. USS 信息

代码语言:javascript复制
 adb shell procrank

指定进程VSS. RSS. PSS. USS 详细信息

代码语言:javascript复制
adb shell procmem pid

18、查看可输入的设备

代码语言:javascript复制
 adb shell getevent -p

19、获得特定设备的输入信息

代码语言:javascript复制
adb shell getevent /dev/input/event0

20、点击

代码语言:javascript复制
 adb shell input tap x y

21、发送按键

代码语言:javascript复制
adb shell input keyevent 82(keycode)

22、输入文本

代码语言:javascript复制
adb shell input text XXXX

23、查看报名中包含mobileqq的进程

代码语言:javascript复制
 adb shell ps | findstr mobileqq

24、远程进程ID

代码语言:javascript复制
adb jdwp

25、获取序列号

代码语言:javascript复制
adb get-serialno

26、重启到bootloader,即刷机模式

代码语言:javascript复制
adb reboot bootloader

27、重启到recovery,即恢复模式

代码语言:javascript复制
adb reboot recovery

28、获取机器MAC地址:

代码语言:javascript复制
 adb shell cat /sys/class/net/wlan0/address

29、获取CPU序列号

代码语言:javascript复制
adb shell cat /proc/cpuinfo

30、覆盖安装(保留数据和缓存文件,重新安装apk)

代码语言:javascript复制
adb install -r <apkfile 

31、安装apk到sd卡

代码语言:javascript复制
 adb install -s <apkfile 

32、卸载app但保留数据和缓存文件

代码语言:javascript复制
adb uninstall -k <package 

33、查看设备cpu和内存占用情况

代码语言:javascript复制
 adb shell top

34、查看占用内存前6的app

代码语言:javascript复制
adb shell top -m 6

35、刷新一次内存信息,然后返回

代码语言:javascript复制
adb shell top -n 1

36、查询各进程内存使用情况

代码语言:javascript复制
 adb shell procrank

37、查看指定进程状态

代码语言:javascript复制
adb shell ps -x [PID] 

38、查看后台services信息

代码语言:javascript复制
 adb shell service list 

39、查看当前内存占用(该方式只能得出系统整个内存的大概使用情况) 车 如果你想查看所有进程的内存使用情况

代码语言:javascript复制
 adb shell procrank

40、查看IO内存分区

代码语言:javascript复制
adb shell cat /proc/iomem

41、查看wifi密码

代码语言:javascript复制
adb shell cat /data/misc/wifi/*.conf

42、清除log缓存

代码语言:javascript复制
 adb logcat -c

43、查看设备信息

代码语言:javascript复制
adb shell cat /system/build.prop

44、跑monkey

代码语言:javascript复制
adb shell monkey -v -p your.package.name 500

45、列出目标设备上安装的所有app的包名

代码语言:javascript复制
adb shell pm list packages

46、截屏命令:

代码语言:javascript复制
adb shell screencap -p /sdcard/screen.png

adb pull /sdcard/screen.png

adb shell rm /sdcard/screen.png

录制手机屏幕,视频格式为mp4,存放到手机sd卡里,默认录制时间为180s:

代码语言:javascript复制
 adb shell screenrecord

限制视频录制时间为10s,如果不限制,默认180s:

代码语言:javascript复制
adb shell screenrecord --time-limit 10 /sdcard/demo.mp4

指定视频分辨率大小:

代码语言:javascript复制
adb shell screenrecord --size 1280*720 /sdcard/demo.mp4

指定视频的比特率:

代码语言:javascript复制
 adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4

在命令行显示log:

代码语言:javascript复制
adb shell screenrecord --time-limit 10 --verbose /sdcard/demo.mp4

47、设置、获取属性信息

代码语言:javascript复制
adb shell getprop [key]

adb shell setprop [key] [value]

监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来

代码语言:javascript复制
adb shell watchprops

48、adb logcat 每一条日志消息都有一个标记和优先级与其关联。

(1)标记是一个简短的字符串,用于标识原始消息的来源 (例如”View” 来源于显示系统)。优先级是下面的字符,顺序是从低到高:

V — 明细 (最低优先级) D — 调试 I — 信息 W — 警告 E — 错误 F — 严重错误 S — 无记载 (最高优先级,没有什么会被记载)

(2)查看过滤日志

代码语言:javascript复制
 adb logcat ActivityManager:I *:S

*:S 用于设置所有标记的日志优先级为S,可以确保输出符合指定的过滤器设置的一种推荐的方式, 这样过滤器就成为了日志输出的“白名单”

显示所有优先级大于等于“warning”的日志

代码语言:javascript复制
adb logcat *:W

(3)日志消息在标记和优先级之外还有很多元数据字段,这些字段可以通过修改输出格式来控制输出结果, -v 选项加上下面列出的内容可以控制输出字段:

brief — 显示优先级/标记和原始进程的PID (默认格式) process — 仅显示进程PID tag — 仅显示优先级/标记 thread — 仅显示进程:线程和优先级/标记 raw — 显示原始的日志信息,没有其他的元数据字段 time — 显示日期,调用时间,优先级/标记,PID long —显示所有的元数据字段并且用空行分隔消息内容

使用 thread 输出格式

代码语言:javascript复制
adb logcat -v thread

(4)Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,要想查看这些附加的缓冲区,可以使用-b 选项,以下是可以指定的缓冲区:

radio — 查看包含在无线/电话相关的缓冲区消息 events — 查看事件相关的消息 main — 查看主缓冲区 (默认缓冲区)

查看radio缓冲区

代码语言:javascript复制
adb logcat -b radio

48、打印应用程序的log

代码语言:javascript复制
adb logcat -b main -v time app.log

49、打印射频相关的log,SIM STK也会在里面,modem相关的ATcommand等,当然跟QXDM差的很远了

代码语言:javascript复制
adb logcat -b radio -v time  radio.log

50、打印系统事件的日志,比如触屏事件

代码语言:javascript复制
adb logcat -b events -v time

51、tcpdump 是很有用的,对于TCP/IP协议相关的都可以使用这个来抓

代码语言:javascript复制
adb shell tcpdump -s 10000 -w /sdcard/capture.pcap

52、状态信息,里面包含有dmesg,dumpstate和dumpsys

代码语言:javascript复制
adb bugreport bugreport.log

53、kernel的log凡是跟kernel相关的,比如driver出了问题(相机,蓝牙,usb,启动,等等吧)

代码语言:javascript复制
adb shell dmesg   ldmesg_kernel.log

54、dumpstate是系统状态信息,里面比较全,包括手机当前的内存信息、cpu信息、logcat缓存,kernel缓存等等 。

代码语言:javascript复制
adb shell dumpstate

55、关于系统service的内容都在这个里面

代码语言:javascript复制
adb shell dumpsys

56、显示内存信息

代码语言:javascript复制
adb shell dumpsys meminfo system

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn的支持。

0 人点赞