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 服务
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 shell dumpsys battery
其中 scale 代表最大电量,level 代表当前电量。上面的输出表示还剩下 68% 的电量。
查看分辨率
adb shell wm size
查看屏幕密度(ppi)
adb shell wm density
查看显示屏参数
adb shell dumpsys window displays
查看android_id
adb shell settings get secure android_id
查看 Android 系统版本
adb shell getprop ro.build.version.release
查看IP地址,网卡相关
adb shell ifconfig
adb shell ifconfig wlan0 # 指定网卡
查看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 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 系统的日志分为两部分
- 底层的 Linux 内核日志输出到
/proc/kmsg
- 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
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