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-path
adb 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.apk
pm 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
参考资料