学习总结
官方说明https://developer.android.google.cn/studio/command-line/adb?hl=zh-cn
不错的使用方法https://github.com/mzlogin/awesome-adb
Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
- 客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
- **守护程序 (adbd)**:用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
- 服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。
安装adb
获取手机的序列号
这个用的多
1 2 3
| adb get-serialno
adb shell getprop ro.serialno
|
ADB获取手机信息
1、获取手机系统版本
1
| adb shell getprop ro.build.version.release
|
2、获取手机系统api版本
1
| adb shell getprop ro.build.version.sdk
|
3、获取手机设备型
1
| adb -d shell getprop ro.product.model
|
5、获取手机厂商名称
1
| adb -d shell getprop ro.product.brand
|
#### 6、获取手机的IME
有三种方式,由于手机和系统的限制,不一定获取到
1
| 1、 adb shell dumpsys iphonesubinfo
|
其中Device ID即为IMEI号
1
| 2、 adb shell getprop gsm.baseband.imei
|
1
| 3、 service call iphonesubinfo 1
|
此种方式,需要自己处理获取的信息得到
7、获取手机mac地址
1
| adb shell cat /sys/class/net/wlan0/address
|
8、获取手机内存信息
1
| adb shell cat /proc/meminfo
|
9、获取手机存储信息
10、获取手机分辨率
1
| adb shell "dumpsys window | grep mUnrestrictedScreen"
|
11、获取手机物理密度
12、获取IP 地址
1
| adb shell ifconfig | grep Mask
|
13、CPU信息
1
| adb shell cat /proc/cpuinfo
|
14、内存信息
1
| adb shell cat /proc/meminfo
|
查看已经连接的设备
1 2 3 4 5 6
| adb devices
>>adb devices List of devices attached 6f0efe58 device
|
无线连接
开启监听的端口,下面命令:这个是开启让设备在 5555 端口监听 TCP/IP 连接
断开 USB 连接
获取您的设备 IP 地址
1 2 3 4 5 6
| adb shell ip route | awk '{print $9}'
演示 >>> adb shell ip route | awk '{print $9}' 10.104.83.11 192.168.248.112
|
通过 IP 地址连接设备
1 2 3 4 5 6 7 8 9
| adb connect ip:端口
演示 >>> adb connect 192.168.248.112:5555 connected to 192.168.248.112:5555
>>> adb devices List of devices attached 192.168.248.112:5555 device
|
断开无线连接
1 2 3 4
| adb disconnect ip:端口
>>> adb disconnect 192.168.248.112:5555 disconnected 192.168.248.112:5555
|
查看应用列表
命令
1
| adb shell pm list packages 参数
|
相关的参数
参数 |
显示列表 |
无 |
所有应用 |
-f |
显示应用关联的 apk 文件 |
-d |
只显示 disabled 的应用 |
-e |
只显示 enabled 的应用 |
-s |
只显示系统应用 |
-3 |
只显示第三方应用 |
-i |
显示应用的 installer |
-u |
包含已卸载应用 |
<FILTER> |
包名包含 <FILTER> 字符串 |
查看全部的程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| adb shell pm list packages
>>> adb shell pm list packages package:com.miui.screenrecorder package:com.github.uiautomator package:cn.xiaochuankeji.tieba package:com.android.cts.priv.ctsshim package:com.quark.browser package:com.google.android.youtube package:com.miui.contentextension package:com.qualcomm.qti.qcolor package:com.android.internal.displa ......................................
|
安装 APK
卸载应用
清除应用数据与缓存
强制停止应用
1
| adb shell am force-stop 程序名
|
复制设备里的文件到电脑
1
| adb pull <设备里的文件路径> [电脑上的目录]
|
复制电脑里的文件到设备
1
| adb push <电脑上的文件路径> <设备里的目录>
|
模拟按键/输入
电源键
命令:
1
| adb shell input keyevent 26
|
执行效果相当于按电源键。
菜单键
命令:
1
| adb shell input keyevent 82
|
HOME 键
命令:
1
| adb shell input keyevent 3
|
返回键
命令:
1
| adb shell input keyevent 4
|
音量控制
增加音量:
1
| adb shell input keyevent 24
|
降低音量:
1
| adb shell input keyevent 25
|
静音:
1
| adb shell input keyevent 164
|
媒体控制
播放/暂停:
1
| adb shell input keyevent 85
|
停止播放:
1
| adb shell input keyevent 86
|
播放下一首:
1
| adb shell input keyevent 87
|
播放上一首:
1
| adb shell input keyevent 88
|
恢复播放:
1
| adb shell input keyevent 126
|
暂停播放:
1
| adb shell input keyevent 127
|
点亮/熄灭屏幕
可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕,但如果明确地想要点亮或者熄灭屏幕,那可以使用如下方法。
点亮屏幕:
1
| adb shell input keyevent 224
|
熄灭屏幕:
1
| adb shell input keyevent 223
|
滑动解锁
如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe
来解锁。
命令(参数以机型 Nexus 5,向上滑动手势解锁举例):
1
| adb shell input swipe 300 1000 300 500
|
参数 300 1000 300 500
分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标
。
输入文本
在焦点处于某文本框时,可以通过 input
命令来输入文本。
命令:
1
| adb shell input text hello
|
现在 hello
出现在文本框了。
重启手机
命令:
查看进程
命令:
输出示例:
1 2 3 4 5 6 7 8
| USER PID PPID VSIZE RSS WCHAN PC NAME root 1 0 8904 788 ffffffff 00000000 S /init root 2 0 0 0 ffffffff 00000000 S kthreadd ... u0_a71 7779 5926 1538748 48896 ffffffff 00000000 S com.sohu.inputmethod.sogou:classic u0_a58 7963 5926 1561916 59568 ffffffff 00000000 S org.mazhuang.boottimemeasure ... shell 8750 217 10640 740 00000000 b6f28340 R ps
|
各列含义:
列名 |
含义 |
USER |
所属用户 |
PID |
进程 ID |
PPID |
父进程 ID |
NAME |
进程名 |
查看实时资源占用情况
命令:
输出示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| User 0%, System 6%, IOW 0%, IRQ 0% User 3 + Nice 0 + Sys 21 + Idle 280 + IOW 0 + IRQ 0 + SIRQ 3 = 307
PID PR CPU% S #THR VSS RSS PCY UID Name 8763 0 3% R 1 10640K 1064K fg shell top 131 0 3% S 1 0K 0K fg root dhd_dpc 6144 0 0% S 115 1682004K 115916K fg system system_server 132 0 0% S 1 0K 0K fg root dhd_rxf 1731 0 0% S 6 20288K 788K fg root /system/bin/mpdecision 217 0 0% S 6 18008K 356K fg shell /sbin/adbd ... 7779 2 0% S 19 1538748K 48896K bg u0_a71 com.sohu.inputmethod.sogou:classic 7963 0 0% S 18 1561916K 59568K fg u0_a58 org.mazhuang.boottimemeasure ...
|
各列含义:
列名 |
含义 |
PID |
进程 ID |
PR |
优先级 |
CPU% |
当前瞬间占用 CPU 百分比 |
S |
进程状态(R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) |
#THR |
线程数 |
VSS |
Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) |
RSS |
Resident Set Size 实际使用物理内存(包含共享库占用的内存) |
PCY |
调度策略优先级,SP_BACKGROUND/SPFOREGROUND |
UID |
进程所有者的用户 ID |
NAME |
进程名 |
top
命令还支持一些命令行参数,详细用法如下:
1 2 3 4 5 6 7
| Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ] -m num 最多显示多少个进程 -n num 刷新多少次后退出 -d num 刷新时间间隔(单位秒,默认值 5) -s col 按某列排序(可用 col 值:cpu, vss, rss, thr) -t 显示线程信息 -h 显示帮助文档
|
查看进程 UID
有两种方案:
adb shell dumpsys package <packagename> | grep userId=
如:
1 2
| $ adb shell dumpsys package org.mazhuang.guanggoo | grep userId= userId=10394
|
通过 ps 命令找到对应进程的 pid 之后 adb shell cat /proc/<pid>/status | grep Uid
如:
1 2 3 4 5 6
| $ adb shell gemini:/ $ ps | grep org.mazhuang.guanggoo u0_a394 28635 770 1795812 78736 SyS_epoll_ 0000000000 S org.mazhuang.guanggoo gemini:/ $ cat /proc/28635/status | grep Uid Uid: 10394 10394 10394 10394 gemini:/ $
|
其它
如下是其它常用命令的简单描述,前文已经专门讲过的命令不再额外说明:
命令 |
功能 |
cat |
显示文件内容 |
cd |
切换目录 |
chmod |
改变文件的存取模式/访问权限 |
df |
查看磁盘空间使用情况 |
grep |
过滤输出 |
kill |
杀死指定 PID 的进程 |
ls |
列举目录内容 |
mount |
挂载目录的查看和管理 |
mv |
移动或重命名文件 |
ps |
查看正在运行的进程 |
rm |
删除文件 |
top |
查看进程的资源占用情况 |