adb 基础命令

adb 基础语法

adb [-d|-e|-s <serialNumber>] <command>


​命令行参数​

  • -d​:指定当前唯一通过 ​USB 连接​ 的 Android 设备为命令目标
  • -e​:指定当前唯一运行的 ​模拟器为​ 命令目标
  • -s <serialNumber>​:指定相应 serialNumber 号的设备/模拟器为命令目标

​重点​

  • 如果只有连了​一台​设备,那就不需要 -d、-e、-s 参数了
  • 多个设备/模拟器连接的情况下较常用的是 ​​-s <serialNumber> ​​参数,​​serialNumber 为设备到序列号​​,设备连接上电脑后可以通过 ​​adb devices​​ 命令获取
  • serialNumber 可能是序列号也可能是 IP

查看当前 adb 连接上的设备列表

adb devices


adb 常用命令_android

杀掉 adb 服务

adb kill-server


开启 adb 服务

adb start-server


adb 安装 app

adb install 包地址


adb 卸载 app

adb uninstall 包名


把文件从手机中复制到电脑

adb pull <手机路径> <电脑路径>


把文件从电脑复制到手机上

adb push <电脑路径> <手机路径>


以 root 权限运行 adb

adb root


存在一些需要 root 权限才能执行的命令

取消 root 权限

adb unroot


指定 adb server 的网络端口

# 默认端口为 5037
adb -P <port> start-server


指定设备 ID

adb -s 09091JEC212986 logcat -v time


查看手机设备信息

查看手机型号

adb shell getprop ro.product.model


adb 常用命令_java_02

查看电池状况

adb shell dumpsys battery


adb 常用命令_android_03

其中 scale 代表最大电量,level 代表当前电量。上面的输出表示还剩下 68% 的电量。

查看分辨率

adb shell wm size


adb 常用命令_日志输出_04

查看屏幕密度(ppi)

adb shell wm density


adb 常用命令_android_05

查看显示屏参数

adb shell dumpsys window displays


查看android_id

adb shell settings get secure android_id


查看 Android 系统版本

adb shell getprop ro.build.version.release


adb 常用命令_日志输出_06

查看IP地址,网卡相关

adb shell ifconfig

adb shell ifconfig wlan0 # 指定网卡


adb 常用命令_java_07

查看Mac地址

adb shell cat /sys/class/net/网卡/address

adb shell cat /sys/class/net/eth0/address
adb shell cat /sys/class/net/wlan0/address


或者

adb shell netcfg


或者直接手机上看

查看CPU信息

adb shell cat /proc/cpuinfo


adb 常用命令_包名_08

查看内存信息

adb shell cat /proc/meminfo


查看硬件与系统属性

查看所有属性

adb shell getprop


单独查看属性

adb shell getprop <属性名>


常用属性列表

属性名

含义

ro.build.version.sdk

SDK 版本

ro.build.version.release

Android 系统版本

ro.build.version.security_patch

Android 安全补丁程序级别

ro.product.model

型号

ro.product.brand

品牌

ro.product.name

设备名

ro.product.board

处理器型号

ro.product.cpu.abilist

CPU 支持的 abi 列表[节注一]

persist.sys.isUsbOtgEnabled

是否支持 OTG

dalvik.vm.heapsize

每个应用程序的内存上限

ro.sf.lcd_density

屏幕密度

应用管理

查看应用列表

adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]


命令行参数列表

参数

显示列表

所有应用

-f

显示应用关联的 apk 文件

-d

只显示 disabled 的应用

-e

只显示 enabled 的应用

-s

只显示系统应用

-3

只显示第三方应用

-i

显示应用的 installer

-u

包含已卸载应用

 

包名包含的字符串

查看系统应用

adb shell pm list packages -s


查看第三方应用

adb shell pm list packages -3


查看某个包名中包含指定字符的应用

# 比如要查看包名包含字符串 java 的应用列表 
adb shell pm list packages java

# 也可以使用 grep 来过滤
adb shell pm list packages | grep java


安装应用

adb install [-lrtsdg] <path_to_apk>


命令行参数列表

参数

含义

-l

将应用安装到保护目录 /mnt/asec

-r

允许覆盖安装

-t

允许安装 AndroidManifest.xml 里 application 指定android:testOnly="true"的应用

-s

将应用安装到 sdcard

-d

允许降级覆盖安装

-g

授予所有运行时权限

卸载应用

adb uninstall [-k] <packagename>


  • 表示应用的​包名
  • -k 参数可选,表示卸载应用​但保留​数据和缓存目录。

清除应用数据和缓存

adb shell pm clear <packagename>


这条命令的效果相当于在设置里的应用信息界面点击了​清除缓存​和​清除数据

查看当前运行的 APP 的页面 Activity 信息

两条命令差不多效果

adb shell "dumpsys window | grep mCurrentFocus"

adb shell "dumpsys activity activities | grep mFocusedActivity"


查看某个包的版本号

adb shell dumpsys package 包名 | findstr versionName


查看应用安装路径

adb shell pm path <PACKAGE>


杀死一个应用进程

adb shell kill [pid]


不过一般先要获得 PID

# 查看所有进程信息的命令
adb shell ps

# 可以通过 grep 筛选进程名称来查 PID
adb shell "ps |grep water"

# 结束进程
adb shell kill pid


日志相关

Android 系统的日志分为两部分

  1. 底层的 Linux 内核日志输出到 ​​/proc/kmsg​
  2. Android 的日志输出到 ​​/dev/log​
adb logcat [<option>] ... [<filter-spec>] ...


按优先级过滤日志

Android 的日志分为如下几个优先级

  • V —— Verbose(最低,输出得最多)
  • D —— Debug
  • I —— Info
  • W —— Warning
  • E —— Error
  • F —— Fatal
  • S —— Silent(最高,啥也不输出)
adb logcat *:W


  • 该命令会将 Warning、Error、Fatal 和 Silent 日志输出。
  • 记得固定写法哦 *:W

指定日志格式

adb logcat -v <format>


brief

<priority>/<tag>(<pid>): <message>

# 示例

adb logcat -v brief
D/AF::TrackHandle( 983): OpPlayAudio: track:14431 usage:13 muted


process

──  (<tag>)
<priority>(<pid>) <message>

# 示例

adb logcat -v process

── (MAXHUB-PostBonjourInfoRunnable)
D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)


tag

<priority>/<tag>: <message>  

# 示例

adb logcat -v tag
D/HeadsetStateMachine: Disconnected process message: 10, size: 0


raw

<message>

# 示例

Disconnected process message: 10, size: 0


time

<datetime> <priority>/<tag>(<pid>): <message>

# 示例

08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0


threadtime

<datetime> <pid> <tid> <priority> <tag>: <message> 

# 示例

08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0


long

[ <datetime> <pid>:<tid> <priority>/<tag> ]
<message>

# 示例

[ 08-28 22:39:39.974 1785: 1832 D/HeadsetStateMachine ]
Disconnected process message: 10, size: 0


清空日志

adb logcat -c


查看内核日志

adb shell dmesg


模拟按键输入

adb 常用命令_android_09

input [<source>] <command> [<arg>...]


物理键

# 电源键
adb shell input keyevent 26

# 菜单键
adb shell input keyevent 82

# HOME 键
adb shell input keyevent 3

# 返回键
adb shell input keyevent 4

# 音量+
adb shell input keyevent 24

# 音量-
adb shell input keyevent 25

# 静音
adb shell input keyevent 164


媒体控制

# 播放/暂停
adb shell input keyevent 85

# 停止播放
adb shell input keyevent 86

# 播放下一首
adb shell input keyevent 87

# 播放上一首
adb shell input keyevent 88

# 恢复播放
adb shell input keyevent 126

# 暂停播放
adb shell input keyevent 127


点亮/熄灭屏幕

# 点亮屏幕
adb shell input keyevent 224

# 熄灭屏幕
adb shell input keyevent 223


触击屏幕

​手机左上角坐标为 0 0 ​

# x,y为坐标位置
adb shell input tap <X> <Y>


滑动屏幕

四个参数:起始点 x 坐标 起始点 y 坐标 结束点 x 坐标 结束点 y 坐标

# 向上滑动
adb shell input swipe 300 1000 300 500

# 向下滑动
adb shell input swipe 300 100 300 1000

# 向左滑动
adb shell input swipe 1000 500 200 500

# 向右滑动
adb shell input swipe 200 500 1000 500


其他实用功能

屏幕截图

adb exec-out screencap -p > sc.png


  • 截图保存到电脑执行该命令的目录下
  • 如果指定文件名以 ​​.png​​ 结尾时可以省略 ​​-p​​ 参数

注意

如果 adb 版本较老,无法使用 ​​exec-out​​ 命令,建议更新 adb 版本

也可以用下面的步骤来完成

# 先截图保存到设备里
adb shell screencap -p /sdcard/sc.png

# 然后将 png 文件导出到电脑
adb pull /sdcard/sc.png


录制屏幕

# 录制屏幕以 mp4 格式保存到 /sdcard
adb shell screenrecord /sdcard/filename.mp4

# 导出到电脑
adb pull /sdcard/filename.mp4


需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒

查看wifi密码

adb shell cat /data/misc/wifi/*.conf


删除系统默认APP

找到要删除的包名

adb shell pm list packages -s 


获取包名的地址

adb shell pm path 包名 


【如:adb shell pm path com.seewo.rainbow.pro】

获取root权限

adb root adb remount


挂载系统读写权限

adb shell rm 包名地址


删除包

adb shell rm -r /data/app/com.seewo.rainbow.pro-1


重启

adb reboot