ADB命令总结
adb与shell命令来源
/frameworks/base/cmds
/system/core/toolbox
adb简介
adb 其实就是 Android Debug Bridge, Android 调试桥的缩写,adb 是一个 C/S 架构的命令行工具,主要由 3 部分组成:
- 运行在 PC 端的 Client : 可以通过它对 Android 应用进行安装、卸载及调试
- 运行在 PC 端的 Service : 其管理客户端到 Android 设备上 adb 后台进程的连接adb 服务启动后,Windows 可以在任务管理器中找到 adb.exe 这个进程
- 运行在 Android 设备上的 adb 后台进程
adb命令
管理多台设备
adb [-e | -d | -s <设备序列号>] <子命令>
-d
发送命令给usb连接的设备-e
发送命令到模拟器设备-s <设备序列号>
发送命令到指定设备
adb 常用命令
devices , 获取设备列表及设备状态 H:\androidDemo\Test>adb devices List of devices attached 192.168.56.101:5555 device
adb get-state
, 获取设备的状态H:\androidDemo\Test>adb get-state device
设备的状态有 3 钟,device , offline , unknown
- device:设备正常连接
- offline:连接出现异常,设备无响应
- unknown:没有连接设备
adb kill-server
, 结束 adb 服务adb start-server
, 启动 adb 服务adb logcat
, 打印 Android 的系统日志adb bugreport
打印dumpsys、dumpstate、logcat的输出,也是用于分析错误输出比较多,建议重定向到一个文件中
H:\androidDemo\Test>adb bugreport > E:\\a.txt
adb install [-l -r -t -s -d]< file >
, 安装应用
参数 | 说明 |
---|---|
-l | 表示应用为受限应用 |
-r: | 替换已经存在的应用 |
-t | 运行安装测试包 |
-s | 安装到SD卡中 |
-d | 允许安装到sd卡中 |
安装部分软件需要对应的CPU版本才行,不然会报错误。
adb uninstall [-k]< package >
, 卸载应用-k:保持data和cache下的文件
adb pull <remote> <local>
, 将 Android 设备上的文件或者文件夹复制到本地
注意权限,复制系统权限的目录下的文件,需要 root ,并且一般的 Android 机 root 之后并不能使用命令去复制,而需要在手机上使用类似于 RE 的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件,这里推荐使用小米手机的开发版本,IUNI 也是不错滴
adb push <local> <remote>
, 推送本地文件至Android设备sdcard 后面的斜杠不能少
adb root
,adb remount
, 只针对类似小米开发版的手机有用,可以直接已这两个命令获取 root 权限,并挂载系统文件系统为可读写状态adb reboot
, 重启 Android 设备bootloader , 重启设备,进入 fastboot 模式,同 adb reboot-bootloader 命令
recovery , 重启设备,进入 recovery 模式,经常刷机的同学比较熟悉这个模式adb forward
, 将 宿主机上的某个端口重定向到设备的某个端口adb forward tcp:1314 tcp :8888
执行该命令后所有发往宿主机 1314 端口的消息、数据都会转发到 Android 设备的 8888 端口上,因此可以通过远程的方式控制 Android 设备。adb connect
远程连接 Android 设备手机、PC处于相同的网络下,手机 root ,安装应用 adbWireless ,启动应用后点击界面中间的按钮:接着运行 adb connect 192.168.1.102 , 即可通过无线的方式连接手机,缺点是速度比较慢
adb get-serialno
获取SN号adb get-devpath
获取device-pathadb backup
参数 | 说明 | |
---|---|---|
无 | 将应用的数据文件写入到指定的文件,在不指定-f输出目录的情况下,保持在当前目录的”backup.ab” | |
[-f < file >] |
指定备份目录 | |
``[-apk \ | -noapk]`` | 是否备份apk文件,默认是noapk |
``[-obb \ | -noobb]`` | 是否备份obb数据包,默认是noobb |
``[-shared \ | -noshared]`` | 是否备份SD卡共享内容,默认是noshared |
[-all] |
备份所有已安装的应用 | |
``[-system \ | -nosystem]`` | 是否备份系统应用,-all默认是包括系统应用 |
< packages... > |
备份指定的应用列表 |
- adb restore
将备份文件恢复到手机中
adb shell 常用命令
文件操作命令
cd
进入目录cat [-beflnstuv] [-B bsize] [file...]
查看文件内容
参数 | 描述 |
---|---|
-b | 显示行号,但会忽略空行 |
-e | 每一行后面加一个$符号 |
-n | 显示行号 |
-s | 显示行号,连续空行标记为一行 |
例如:
H:\androidDemo\Test>adb shell cat -e -B 1 /data/misc/wifi/*.conf
df
列出分区列表du [-H] [-L] [-P] [-a] [-d depth] [-s] [-cghikmnrx] [file...]
查询文件或目录的磁盘使用空间ls [-a] [-i] [-l] [-n] [-s]
列出目录内容-a
:列出所有文件,包括隐藏文件-i
:输出文件的i节点的索引信息-l
:列出文件的详细信息-n
:用数字的GUID代替名称-s
:输出该文件的大小
grep [file...]
指定文件中搜索特定的内容,并将含有这些内容的行标准输出(windows 请使用findstr替代grep)mkdir -p,-parents
创建目录
参数 | 说明 |
---|---|
-p,–parents | 递归创建目录 |
touch touch [-alm] [-t YYYYMMDD [.HHMMSS]] < file >
创建文件rm [-f\|-i][-dPRrvWx]file
删除文件
参数 | 说明 |
---|---|
-f | 强制删除文件,系统不提示 |
-i | 交互式删除,删除前提示 |
-d | 改变硬连接数据删成0,删除该文件 |
-r | 强制删除文件夹包括里面的文件 |
mv [-fiv]source target
移动文件(相当于剪切)
参数 | 说明 |
---|---|
-f | 强制移动,若文件已经存在目标则直接覆盖 |
-i | 若目标文件已经存在,会询问是否覆盖 |
rmdir [-p] directory
删除目录
参数 | 说明 |
---|---|
-p | 递归删除目录,只能删除空目录 |
dd[operand...]
dd if =source of=targe
复制文件
其他文件命令
chomd [OPTION] <MODE> <FILE>
文件权限修改
|参数|说明|
|–|–|
|-R|递归改变文件和目录|
|-h|不遵循符号连接|md5 file...
查询文件的MD5值mount [-r] [-w] [-o options] [-t type] device directory
挂载设备信息umount <path>
卸载分区挂载cmp[-b][-l][-n count] file1 file2
要指出两个文件是否存在差异
其他命令
wm size
获取屏幕分辨率dmesg
输出内核信息wipe wipe system | data | all
擦除分区,恢复出厂设置adb shell svc wifi [enable|disable]
|参数|说明|
|–|–|
|enable|打开wifi|
|disable|关闭wifi|
screenrecord <文件保存路径>
屏幕录像(只支持android4.4以上的设备,)使用ctrl+c停止录像screencap -p 文件保存路径
屏幕截图ping [option] ipv4
因特网包探测器,用于测试网络连接量的程序
pm
Package Manager , 可以用获取到一些安装在 Android 设备上得应用信息,直接运行 adb shell pm 可以获取到该命令的帮助信息
pm list packages [参数] [过滤器]
列出安装在设备上的应用
不带任何选项:列出所有的应用的包名(不知道怎么找应用的包名的同学看这里)
adb shell pm list package
参数 | 描述 |
---|---|
-s | 列出系统应用 |
-3 | 列出第三方应用 |
-f | 列出应用包名及对应的apk名及存放位置 |
-i | 列出应用包名及其安装来源 |
-d | 列出禁用的应用的包名 |
-e | 列出可用的应用的包名 |
命令最后增加 FILTER:过滤关键字,可以很方便地查找自己想要的应用
参数组合使用,例如,查找三方应用中知乎的包名、apk存放位置、安装来源:
[xuxu:~]$adb shell pm list package -f -3 -i zhihu
package:/data/app/com.zhihu.android-1.apk=com.zhihu.android installer=com.xiaomi.market
pm path
列出对应包名的 .apk 位置[xuxu:~]$
adb shell pm path com.tencent.mobileqq
package:/data/app/com.tencent.mobileqq-1.apkpm list instrumentation , 列出含有单元测试 case 的应用,后面可跟参数 -f (与 pm list package 中一样),以及 [TARGET-PACKAGE]
pm dump , 后跟包名,列出指定应用的 dump 信息,里面有各种信息
adb shell pm dump com.tencent.mobileqq
pm install [-lrtsfd] [-i PACKAGE] [PATH] , 安装应用
目标 apk 存放于 PC 端,请用 adb install 安装
目标 apk 存放于 Android 设备上,请用 pm install 安装
参数 | 说明 |
---|---|
-l | 锁定应用程序 |
-r | 重新安装应用,且保留应用数据 |
-t | 允许测试apk被安装 |
-i <INSTALLER_PACKAGE_NAME> |
指定安装包的包名 |
-s | 安装到sd卡 |
-f | 安装到系统内置存储中(默认安装位置) |
-d | 允许降级安装(同一应用低级换高级) |
-g | 授予应用程序清单中列出的所有权限(只有6.0系统可用) |
- pm uninstall [options] <包名> , 卸载应用,同 adb uninstall
参数 | 说明 |
---|---|
-k | 卸载应用且保留数据与缓存(如果不加-k则全部删除) |
- pm clear , 清除应用数据
- pm set-install-location , pm get-install-location , 设置应用安装位置,获取应用安装位置
[0/auto]:默认为自动
[1/internal]:默认为安装在手机内部
[2/external]:默认安装在外部存储
- pm list permission-groups 察看已知的权限组
- pm list permissions [参数] [权限组]
察看所有已知的权限
参数 | 说明 |
---|---|
-g | 按组进行列出权限 |
-f | 打印所有信息 |
-s | 简短的摘要 |
-d | 只有危险的权限列表 |
-u | 只有权限的用户将看到列表,用户自定义权限 |
- pm grant <包名> <权限名> 授予应用权限许可。必需android6.0(API级别23)以上的设备
pm revoke <包名> <权限名> 撤销应用权限。必需android6.0(API级别23)以上的设备
pm list features 列出所有硬件相关信息
- pm list libraries :当前设备支持的libs
- pm list users :系统上所有的users
am
am start [参数] <INTENT>
, 启动一个 Activity,已启动系统相机应用为例
参数 | 说明 | |
---|---|---|
-D | 开启调试模式 | |
-W | 等待启动完成 | |
--start-profile <file> |
开始分析器和发送结果(文件) | |
–sampling INTERVAL | 使用样本分析 间隔:微秒,样品(使用—start-profiler)之间 | |
-P <FILE> |
应用空闲下来后,停止profile | |
-R COUNT | 重复活动推出<统计>次。每个重复之前,活动将会结束 | |
-S | 组织目标应用开始前的活动 | |
–opengl-trace | 启用跟踪OpenGL函数 | |
[—user <USER_ID> |
current] | 指定哪些用户运行,如果不指定则使用当前用户 |
am instrument
, 启动一个 instrumentation , 单元测试或者 Robotium 会用到am monitor
, 监控 crash 与 ANR
[xuxu:~]$
adb shell am monitor
Monitoring activity manager… available commands:
(q)uit: finish monitoring
** Activity starting: com.android.camera
am force-stop
, 后跟包名,结束应用adb shell am kill [参数] <process>
,停止后台单个进程adb shell am kill-all
,停止后台所进程adb shell am startservice [参数] <INTENT>
, 启动一个服务adb shell am stopservice [参数] <INTENT>
,停止一个服务adb shell am broadcast [参数] <INTENT>
, 发送一个广播
Intent | 说明 | Am参数 |
---|---|---|
component | 组件名称 格式为:包名/类名 | -n |
action | 指定Intent的执行动作,比如调用拨打电话组件 | -a |
data_url | 表示与动作要操纵的数据 | -d |
category | categary是一个字符串,提供了额外的信息,有关于能够处理这个Intent对象的组件种类 | -c |
extra | 传递给Intent的额外数据,以Bundle的形式定义,就是一些键值对 | -e |
mime_type | MIME类型 | -t |
flags | 各种类型的flag,很多是用来指定Android系统如何启动activity,还有启动了activity后如何对待他 | -f |
package | 包名 | -p |
input
input text
, 发送文本内容,不能发送中文adb shell input text asd
input keyevent
, 发送按键事件adb shell input keyevent 3
常用的键
1 –> “KEYCODE_MENU”
3 –> “KEYCODE_HOME”
4 –> “KEYCODE_BACK”input tap
, 对屏幕发送一个触摸事件 前一个为宽,后一个为高adb shell input tap 1000 800
input swipe
, 滑动事件adb shell input swipe 1000 800 100 800
如果版本不低于 4.4 , 可以模拟长按事件
adb shell input tap 1000 800 1000 800 2000
dumpsys
Dumpsys用户系统诊断,它运行在设备上,并提供系统服务状态信息
adb shell dumpsys [system serbices]
包信息查询
adb shell dumpsys package [-h] [-f] [—checkin] [cmd]…
参数 | 说明 |
---|---|
-h | 打印帮助信息 |
-f | 打印intent filter的信息 |
–checkin | 打印出已经登记的库、系统功能、安装包 |
cmd | 子命令(可以在-h帮助文档中查看有哪些子命令) |
cmd子命令 | 说明 |
---|---|
prov[iders] | 获取content providers |
p[ackages] | 获取安装包基本信息 |
s[hared-user] | 获取共享用户ID的应用 |
m[essages] | 打印运行时收集的信息 |
v[erifiers] | 打印包校验信息 |
version | 打印数据库版本信息 |
write | 写当前位置 |
<package.name> |
输出给定包的信息 |
installs | 安装会话的详细信息 |
l[ibraries] | 列出已知的共享库 |
f[ibraries] | 列出手机的功能 |
k[eysets] | 列出各个包的Signing KeySets |
r[esolvers] | 获取intent filter |
perm[issions] | 获取权限 |
pref[erred] | 打印包首选项 |
preferred-xml [—full] | 打印包首选项,xml格式打印 |
activity信息查询
adb shell dumpsys activity [-a] [-c]…
参数 | 说明 |
---|---|
-a | 包括所有可用的服务器状态 |
-c | 包括客户端状态 |
-p | 限制输出为给定的包,例如: adb shell dumpsys activity -p com.android.browser |
-h | 打印帮助信息 |
cmd | 子命令 |
cmd子命令 | 说明 |
---|---|
a[ctivities] | activity堆栈状态 |
r[recents] | 最近activity的状态 |
b[rodacasts] [package_name] [histpry [-s]] | 广播状态 |
i[ntents] [package_name] | 挂起的intent状态 |
p[rocesses] [package_name] | 进程状态 |
o[om] | oom管理 |
perm[issions] | url权限授权状态 |
prov[iders] [comp_spec…] | content provider状态 |
provider [comp_spec] | provider客户端状态 |
s[ervices] [comp_spec…] | 服务状态 |
as[sociations] | 跟踪应用程序的关联 |
service [comp_spec] | 服务客户端状态 |
package [package_name] | 给的包的所有状态 |
all | 转储所有的activityes |
top | 转储栈顶的activity |
write | 写入所有挂起状态存储 |
track-associations | 允许会话跟踪 |
untrack-associations | 禁用和明确会话跟踪,命令参数可能也是一个comp_spec 转储的activity |
网络信息查询
子命令 | 说明 | 命令格式 |
---|---|---|
connectivity | 网络连接 | adb shell dumpsys connectivity |
netpolicy | 网络策略 | adb shell dumpsys netpolicy |
netstats | 网络状态 | adb shell dumpsys netstats |
network_management | 网络管理 | adb shell dumpsys network_management |
其他常用服务信息查询
adb shell dumpsys | findstr DUMP
列出所有服务adb shell dumpsys window w | findstr \/ | findstr name=
获取当前应用的component
子命令 | 说明 | 命令格式 |
---|---|---|
meminfo | 内存 | adb shell dumpsys meminfo |
cpuinfo | CPU | adb shell dumpsys cpuinfo |
gfxinfo | 帧率 | adb shell dumpsys gfxinfo |
display | 显示 | adb shell dumpsys display |
power | 电源 | adb shell dumpsys power |
batterystats | 电池状态 | adb shell dumpsys batterystats |
battery | 电池 | adb shell dumpsys battery |
alarm | 闹钟 | adb shell dumpsys alarm |
location | 位置 | adb shell dumpsys location |
telephony.registry | 电话信息 | adb shell dumpsys telephony.registry |
wifi | wifi信息 | adb shell dumpsys wifi |
notification | 通知信息 | adb shell dumpsys notification |