Android中ADB命令用法大结局
作者:Only凹凸曼 发布时间:2022-12-18 10:36:28
前言
说到 ADB 大家应该都不陌生,即 Android Debug Bridge,Android调试桥,身为 Android 开发的我们,熟练使用 ADB 命令将会大大提升我们的开发效率。
查看版本
ADB 的安装这里就不多说了,输入以下命令有如下提示就证明你环境ok,否则自行网上搜索解决下。
$ adb version
Android Debug Bridge version 1.0.36
Revision 8f855a3d9b35-android
ADB 的命令有很多,今天就来总结下我在开发常用到的一些 ADB 命令。
ADB命令
1、查看最上层成activity名字:
adb shell dumpsys activity | findstr "mFocusedActivity"
或者 adb shell dumpsys window w | findstr \/ | findstr name=
2、查看Activity的任务栈:
adb shell dumpsys activity activities
3、显示所有的activities的信息,包括任务栈等:
adb shell dumpsys activity
4、查看Android应用包名package和入口activity名称 :
aapt dump badging E:\apk\es3.apk
5、显示accounts信息:
adb shell dumpsys account
5、显示CPU信息 :
adb shell dumpsys cpuinfo
查看CPU使用信息
adb shell top -n 1 -d 0.5 | findstr proc_ id
6、显示键盘,窗口和它们的关系
adb shell dumpsys window
当我们需要知道设备的分辨率时
adb shell dumpsys window displays
查看UI绘制的各个层级信息
adb shell dumpsys SurfaceFlinger
7、显示wifi信息
adb shell dumpsys wifi
8、电量信息及CPU 使用时长
adb shell dumpsys batteryinfo $package_name
9、获取安装包信息
adb shell dumpsys package packagename
10、每个应用的启动次数和时间
adb shell dumpsys usagestats
11、显示状态栏相关的信息
adb shell dumpsys statusbar
12、内存信息(meminfo package_name or pid 使用程序的包名或者进程id显示内存信息)
adb shell dumpsys meminfo
得到com.teleca.robin.test进程使用的内存的信息 adb shell dumpsys meminfo com.teleca.robin.test
13、磁盘相关信息
adb shell dumpsys diskstats
14、电池相关信息
adb shell dumpsys battery
15、显示Alarm信息
adb shell dumpsys alarm
统计系统耗电量
adb shell dumpsys batterystats
设置线程的优先级
adb shell dumpsys activity|grep oom_adj
16、强制关闭一个应用程序;
adb shell am force-stop <PACKAGE>
17、查看内存信息
adb shell cat proc/meminfo
指定进程内存地址映射
adb shell cat proc/pid/maps
指定进程内存详细使用信息
adb shell cat proc/pid/smaps
VSS. RSS. PSS. USS 信息
adb shell procrank
指定进程VSS. RSS. PSS. USS 详细信息
adb shell procmem pid
18、查看可输入的设备
adb shell getevent -p
19、获得特定设备的输入信息
adb shell getevent /dev/input/event0
20、点击
adb shell input tap x y
21、发送按键
adb shell input keyevent 82(keycode)
22、输入文本
adb shell input text XXXX
23、查看报名中包含mobileqq的进程
adb shell ps | findstr mobileqq
24、远程进程ID
adb jdwp
25、获取序列号
adb get-serialno
26、重启到bootloader,即刷机模式
adb reboot bootloader
27、重启到recovery,即恢复模式
adb reboot recovery
28、获取机器MAC地址:
adb shell cat /sys/class/net/wlan0/address
29、获取CPU序列号
adb shell cat /proc/cpuinfo
30、覆盖安装(保留数据和缓存文件,重新安装apk)
adb install -r <apkfile>
31、安装apk到sd卡
adb install -s <apkfile>
32、卸载app但保留数据和缓存文件
adb uninstall -k <package>
33、查看设备cpu和内存占用情况
adb shell top
34、查看占用内存前6的app
adb shell top -m 6
35、刷新一次内存信息,然后返回
adb shell top -n 1
36、查询各进程内存使用情况
adb shell procrank
37、查看指定进程状态
adb shell ps -x [PID]
38、查看后台services信息
adb shell service list
39、查看当前内存占用(该方式只能得出系统整个内存的大概使用情况) 车
如果你想查看所有进程的内存使用情况
adb shell procrank
40、查看IO内存分区
adb shell cat /proc/iomem
41、查看wifi密码
adb shell cat /data/misc/wifi/*.conf
42、清除log缓存
adb logcat -c
43、查看设备信息
adb shell cat /system/build.prop
44、跑monkey
adb shell monkey -v -p your.package.name 500
45、列出目标设备上安装的所有app的包名
adb shell pm list packages
46、截屏命令:
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png
adb shell rm /sdcard/screen.png
录制手机屏幕,视频格式为mp4,存放到手机sd卡里,默认录制时间为180s:
adb shell screenrecord
限制视频录制时间为10s,如果不限制,默认180s:
adb shell screenrecord --time-limit 10 /sdcard/demo.mp4
指定视频分辨率大小:
adb shell screenrecord --size 1280*720 /sdcard/demo.mp4
指定视频的比特率:
adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4
在命令行显示log:
adb shell screenrecord --time-limit 10 --verbose /sdcard/demo.mp4
47、设置、获取属性信息
adb shell getprop [key]
adb shell setprop [key] [value]
监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来
adb shell watchprops
48、adb logcat 每一条日志消息都有一个标记和优先级与其关联。
(1)标记是一个简短的字符串,用于标识原始消息的来源 (例如"View" 来源于显示系统)。优先级是下面的字符,顺序是从低到高:
V — 明细 (最低优先级)
D — 调试
I — 信息
W — 警告
E — 错误
F — 严重错误
S — 无记载 (最高优先级,没有什么会被记载)
(2)查看过滤日志
adb logcat ActivityManager:I *:S
*:S 用于设置所有标记的日志优先级为S,可以确保输出符合指定的过滤器设置的一种推荐的方式,
这样过滤器就成为了日志输出的“白名单”
显示所有优先级大于等于“warning”的日志
adb logcat *:W
(3)日志消息在标记和优先级之外还有很多元数据字段,这些字段可以通过修改输出格式来控制输出结果, -v 选项加上下面列出的内容可以控制输出字段:
brief — 显示优先级/标记和原始进程的PID (默认格式)
process — 仅显示进程PID
tag — 仅显示优先级/标记
thread — 仅显示进程:线程和优先级/标记
raw — 显示原始的日志信息,没有其他的元数据字段
time — 显示日期,调用时间,优先级/标记,PID
long —显示所有的元数据字段并且用空行分隔消息内容
使用 thread 输出格式
adb logcat -v thread
(4)Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,要想查看这些附加的缓冲区,可以使用-b 选项,以下是可以指定的缓冲区:
radio — 查看包含在无线/电话相关的缓冲区消息
events — 查看事件相关的消息
main — 查看主缓冲区 (默认缓冲区)
查看radio缓冲区
adb logcat -b radio
48、打印应用程序的log
adb logcat -b main -v time>app.log
49、打印射频相关的log,SIM STK也会在里面,modem相关的ATcommand等,当然跟QXDM差的很远了
adb logcat -b radio -v time> radio.log
50、打印系统事件的日志,比如触屏事件
adb logcat -b events -v time
51、tcpdump 是很有用的,对于TCP/IP协议相关的都可以使用这个来抓
adb shell tcpdump -s 10000 -w /sdcard/capture.pcap
52、状态信息,里面包含有dmesg,dumpstate和dumpsys
adb bugreport>bugreport.log
53、kernel的log凡是跟kernel相关的,比如driver出了问题(相机,蓝牙,usb,启动,等等吧)
adb shell dmesg > ldmesg_kernel.log
54、dumpstate是系统状态信息,里面比较全,包括手机当前的内存信息、cpu信息、logcat缓存,kernel缓存等等 。
adb shell dumpstate
55、关于系统service的内容都在这个里面
adb shell dumpsys
56、显示内存信息
adb shell dumpsys meminfo system
来源:https://www.jianshu.com/p/980fea2c9457


猜你喜欢
- 到底什么是反射呢???反射的核心就是JVM在运行时才动态加载类或调用方法,访问属性,它不需要事先(写代码的时候或编译期)知道运行对象是谁。每
- Android 6本文根据我个人的开发经验,总结了从 Android 6 - Android 13 重要的行为变更。当然,这不是 Andro
- 本文实例讲述了C#实现xml文件反序列化读入数据到object的方法。分享给大家供大家参考。具体实现方法如下:public static o
- 一、@Value读取application.properties配置文件中的值application.properties配置文件fileN
- 前言在 Java 中通常对一些方法进行一些注解操作,但是很多注解在 Java 代码上没有问题,如果切换到 Kotlin 上时,如果继续使用这
- 1、注解方式,在controller层通过initBinder注解实现@InitBinderpublic void initBinder(H
- 一、连接客户端原理流程图二、功能要求1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中;2) 客户端要发给服务器的数据,
- 扇形统计图绘制一个扇形原理也是基于Canvas进行绘制;ArcSegment[1]绘制弧形;绘制指示线;绘制文本;鼠标移入动画;显示详情Po
- java 数据结构中栈和队列的实例详解栈和队列是两种重要的线性数据结构,都是在一个特定的范围的存储单元中的存储数据。与线性表相比,它们的插入
- 引言 在c#中,可能大多数人针对于多线程之间的通讯,是熟能生巧,对于AsyncLocal 和Thre
- 背景最近遇到一个有意思的事情,java应用运行在阿里云的ack集群中,某一天有个应用启动突然发现阿里云上的agent都没有注册了,于是开始排
- 1.先导入以下两个jar包2.jsp文件表单必须是post提交,编码必须是multipart/form-data 文件上传文本框必须起名。3
- 前言最近搭建的springbootboot的网关,配置请求路径,竟然没有生效现象配置文件如下:启动类,控制台打印的结果如下:我随便更换端口都
- 项目开发的过程中,经常会遇到添加水印的需求,其作用无非就是防止重要信息通过截图外传。(虽然我觉得并没有什么卵用,但领导的需求是不容质疑的)那
- 话不多说,请看代码:/// <summary> /// 根据指定尺寸得到按比例缩放的尺寸,返回true
- 可重入锁,从字面来理解,就是可以重复进入的锁。可重入锁,也叫做递归锁,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但
- 本文实例为大家分享了Java实现聊天机器人完善版的具体代码,供大家参考,具体内容如下Client代码:package GUISocket.c
- 文章描述弱水三千,我只取一瓢饮。一张动图,我只想要其中一帧。如何将一个GIF动态图分割成一帧一帧的图片?其实现在这样的工具随处可见,无论是在
- 一. SpringBoot集成liquibase项目集成liquibase作用对数据库表字段进行版本控制项目初始化部署时初始化数据库表和数据
- 一.你了解类吗?在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候