ADB常用指令备忘
安装安卓系统应用
- adb disable-verity
- adb reboot
- adb root
- adb remount
- adb push D:\bt_stack.conf /etc/bluetooth/
开启WiFi调试
- 暂时开启,查看IP
pc:
ifconfig eth0
mobile:
ifconfig wlan0
- 设定端口监听
adb tcpip 5555
常用的命令
- 获取序列号:
adb get-serialno
- 查看连接计算机的设备:
adb devices
- 重启机器:
adb reboot
- 重启到bootloader,即刷机模式:
adb reboot bootloader
- 重启到recovery,即恢复模式:
adb reboot recovery
- 查看log:
adb logcat
- 终止adb服务进程:
adb kill-server
- 重启adb服务进程:
adb start-server
- 获取机器MAC地址:
adb shell cat /sys/class/net/wlan0/address
- 获取CPU序列号:
adb shell cat /proc/cpuinfo
- 安装APK:
adb install <apkfile> //比如:adb install baidu.apk
- 保留数据和缓存文件,重新安装apk:
adb install -r <apkfile> //比如:adb install -r baidu.apk
- 安装apk到sd卡:
adb install -s <apkfile> // 比如:adb install -s baidu.apk
- 卸载APK:
adb uninstall <package> //比如:adb uninstall com.baidu.search
- 卸载app但保留数据和缓存文件:
adb uninstall -k <package> //比如:adb uninstall -k com.baidu.search
- 启动应用:
adb shell am start -n <package_name>/.<activity_class_name>
- 查看设备cpu和内存占用情况:
adb shell top
- 查看占用内存前6的app:
adb shell top -m 6
- 刷新一次内存信息,然后返回:
adb shell top -n 1
- 查询各进程内存使用情况:
adb shell procrank
- 杀死一个进程:
adb shell kill [pid]
- 查看进程列表:
adb shell ps
- 查看指定进程状态:
adb shell ps -x [PID]
- 查看后台services信息:
adb shell service list
- 查看当前内存占用:
adb shell cat /proc/meminfo
- 查看IO内存分区:
adb shell cat /proc/iomem
- 将system分区重新挂载为可读写分区:
adb remount
- 从本地复制文件到设备:
adb push <local> <remote>
- 从设备复制文件到本地:
adb pull <remote> <local>
- 列出目录下的文件和文件夹,等同于dos中的dir命令:
adb shell ls
- 进入文件夹,等同于dos中的cd 命令:
adb shell cd <folder>
- 重命名文件:
adb shell rename path/oldfilename path/newfilename
- 删除system/avi.apk:
adb shell rm /system/avi.apk
- 删除文件夹及其下面所有文件:
adb shell rm -r <folder>
- 移动文件:
adb shell mv path/file newpath/file
- 设置文件权限:
adb shell chmod 777 /system/fonts/DroidSansFallback.ttf
- 新建文件夹:
adb shell mkdir path/foldelname
- 查看文件内容:
adb shell cat <file>
- 查看wifi密码:
adb shell cat /data/misc/wifi/*.conf
- 清除log缓存:
adb logcat -c
- 查看bug报告:
adb bugreport
- 获取设备名称:
adb shell cat /system/build.prop
- 查看ADB帮助:
adb help
- 跑monkey:
adb shell monkey -v -p your.package.name 500
- 屏幕截屏
adb shell /system/bin/screencap -p /sdcard/screenshot.png
- 查看系统的CPU架构
adb shell getprop ro.product.cpu.abi
修改屏幕分辨率
- 修改为指定分辨率
adb shell wm size 1136x2480
- 恢复为默认分辨率
adb shell wm size reset
权限控制
adb shell pm grant <包名> <权限名>
:用于授予应用指定的权限。例如,adb shell pm grant com.example.app android.permission.CAMERA
会授予com.example.app应用使用摄像头的权限。adb shell pm revoke <包名> <权限名>
:与grant相反,用于撤销应用的指定权限。
缓冲区日志查看
adb logcat -b crash
查看缓冲区的打印- Radio 查看包含在通信系统的log,如蓝牙、wifi、打印.
- Events 查看事件相关的消息,比如启动应用,停止文件 事件.
- Main 查看主缓冲区、所有Java层的log(默认缓冲区).
- System 输出系统组件的log(默认缓冲区).
android studio
过滤器具体使用
- tag:与日志条目的 tag 字段匹配。
- package:与日志记录应用的软件包名称匹配。
- process:与日志记录应用的进程名称匹配。
- message:与日志条目的消息部分匹配。
- level:与指定或更高严重级别的日志匹配,例如 DEBUG。
- age:如果条目时间戳是最近的,则匹配。值要指定为数字,后跟表示时间单位的字母:s 表示秒,m 表示分钟,h 表示小时,d 表示天。例如,age: 5m 只会过滤过去 5 分钟内记录的消息。
否定和正则表达式
以下字段支持否定和正则表达式匹配:tag、package、message 和 line。
-
否定的表示方式是在字段名称前面加上
-
。例如,-tag:MyTag
匹配 tag 不包含字符串 MyTag 的日志条目。 -
正则表达式匹配通过在字段名称中附加
~
来表示。例如tag~:My.*Tag
。 -
否定和正则表达式修饰符可以结合使用。例如,
-tag~:My.*Tag
。 -
逻辑运算符和圆括号
查询语言支持由 & 和 | 以及圆括号表示的 AND 和 OR 运算符。例如:
(tag:foo | level:ERROR) & package:mine
请注意,系统会强制执行常规的运算符优先级,因此:
tag:foo | level:ERROR & package:mine
求值结果为:
tag:foo | (level:ERROR & package:mine)
- 隐式逻辑运算符
如果未应用逻辑运算符,查询语言会自动将具有相同键的多个非否定 key-value 过滤器项视作 OR,并将其他过滤器项视作 AND。
例如:
tag:foo tag:bar package:myapp
求值结果为:
(tag:foo | tag:bar) & package:myapp
但是:
tag:foo -tag:bar package:myapp
求值结果为:
tag:foo & -tag:bar & package:myapp
如果多个查询字词之间用空格分隔开且没有逻辑运算符,系统会将其视为低优先级 AND。例如,foo bar tag:bar1 | tag:bar2 这一术语等同于 'foo bar' & (tag: bar1 | tag: bar2)。
- 特殊查询
package:mine
软件包键支持特殊值 mine。此特殊值与开放项目中包含的任何软件包名称匹配。
- level
level 查询与 Logcat 消息的日志级别匹配,其中日志条目的级别大于或等于查询级别。
例如,level:INFO 匹配日志级别为 INFO、WARN、ERROR 或 ASSERT 的任何日志条目。级别不区分大小写。有效级别包括:VERBOSE、DEBUG、INFO、WARN、ERROR 和 ASSERT。
- age
age 查询根据条目的时间戳进行匹配,格式为 age:
<number>
是一个整数值
<unit>
是 s、m、h 和 d(秒、分钟、小时和天)之一。
根据以下列表,age 查询匹配的日志消息包含值所描述范围内的时间戳。例如,查询 age:5m 匹配时间戳不早于 5 分钟前的条目。
age:30s
age:5m
age:3h
age:1d
请注意,该时间戳是与主机(而非已连接的设备)的时间戳进行比较的。如果设备时间设置不正确,此查询可能无法正常运行。
- is 键
您可以按如下方式使用 is 键:
-
is:crash
匹配表示应用崩溃(原生或 Java)的日志条目。 -
is:stacktrace
匹配表示任何类似 Java 堆栈轨迹的日志条目,而不管日志级别如何。
name 键 -
通过 name 键,您可以为已保存的过滤器提供一个唯一名称,使其在过滤器历史记录下拉菜单中易于识别。虽然您不会因多次指定 name 而遇到错误,但 IDE 仅会在查询中使用 name 的最后一个指定值。
网络mac地址设定
- mac地址设置
adb shell ifconfig wlan2 hw ether 新的地址
adb查看焦点
查看麦克风使用情况
- 查看麦克风设置 :可以使用命令
adb shell dumpsys audio
查看设备的音频配置信息,其中会包含麦克风设置的相关条目,如microphone
或Audio source
等,在输出中查找这些条目即可查看麦克风的状态、音频源以及其他相关配置。 - 查看当前使用麦克风的应用 :通过命令
adb shell dumpsys window | grep mCurrentFocus
可以获取当前窗口焦点的信息,虽然该命令本身不是直接查看麦克风使用情况,但可以知道当前处于前台的应用,从而推测该应用可能正在使用麦克风。
查看音频焦点使用情况
- 查看当前音频焦点持有者 :执行命令
adb shell dumpsys audio
,在输出的信息中查找Audio Focus stack entries
部分,这里会显示当前音频焦点的持有者以及焦点栈中的相关信息。 - 查看音频焦点变化历史 :音频焦点的变化历史通常不会直接以日志的形式保存在系统中,可以通过在应用中实现音频焦点监听功能来记录焦点变化。在应用中使用
AudioManager.OnAudioFocusChangeListener
接口的onAudioFocusChange()
方法来监听音频焦点变化,并在适当的地方记录日志,从而获取焦点变化历史。
系统信息查询
1. 查看系统版本
adb shell getprop ro.build.version.release
输出示例:
13
这表示设备的系统版本是 Android 13。
2. 查看更详细的版本信息
adb shell getprop | grep ro.build
输出示例:
[ro.build.version.release]: [13]
[ro.build.version.sdk]: [33]
[ro.build.version.security_patch]: [2023-08-05]
[ro.build.version.incremental]: [TQ3A.230805.001]
ro.build.version.release
:系统版本(如 Android 13)。ro.build.version.sdk
:SDK 版本号(如 33 对应 Android 13)。ro.build.version.security_patch
:安全补丁日期。ro.build.version.incremental
:构建号。
3. 其他常用命令
- 查看设备型号:
adb shell getprop ro.product.model
- 查看设备品牌:
adb shell getprop ro.product.brand
- 查看设备序列号:
adb shell getprop ro.serialno