ADB常用指令备忘

安装安卓系统应用

  1. adb disable-verity
  2. adb reboot
  3. adb root
  4. adb remount
  5. 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
修改屏幕分辨率
  1. 修改为指定分辨率
    adb shell wm size 1136x2480
  2. 恢复为默认分辨率
    adb shell wm size reset
权限控制
  1. adb shell pm grant <包名> <权限名>:用于授予应用指定的权限。例如,adb shell pm grant com.example.app android.permission.CAMERA会授予com.example.app应用使用摄像头的权限。
  2. adb shell pm revoke <包名> <权限名>:与grant相反,用于撤销应用的指定权限。
缓冲区日志查看
  1. 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查看设备的音频配置信息,其中会包含麦克风设置的相关条目,如microphoneAudio 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
    
posted @ 2024-12-06 16:57  懒懒初阳  阅读(162)  评论(0)    收藏  举报