admin管理员组文章数量:1603460
前言
其实关于adb命令的博文已经很多而且有些写的很全面的,但我之所以自己也写一遍[而且内容不全]并不是想“狗尾续貂”,只是最近有一次忽然发现,以前用过的很多命令有些忘记了,平时想不起来直接度娘了。现在忽然感觉有必要记一下,虽然有点晚,但总比停下来强一些,写一遍也让自己对adb命令有个新的认识。以下所有的adb命令全部是本人在工作中使用过或者自己平时使用过的,如有记录出错或者错误望诸位指正。
一、adb环境与前期准备
(一).环境与连接方式
1.常见的有3种配置方式:
a.Android开发者
:直接配置adb命令环境变量;
b.偶尔使用者
:Google Chrome浏览器添加adb插件:adb插件下载地址;
c.应急
:直接下载adb命令工具包 :adb命令工具包;
2.连接方式
a. USB一类的数据线,最为常见的连接方式;
b. 网络连接,网络连接的前提是Android设备和pc在同一局域网下,常见有:
(1)、Ethernet以太网(直接插个网线);
(2)、WIFI;
网络连接方式在确认设备连上网之后,还需要执行adb connect HOST[:PORT]命令之后才是可以使用;其中host是Android设备IP地址。
3.断开连接
a. 暴力型:直接拔掉USB、断开WIFI、拔掉网线;
b. adb命令:adb disconnect [HOST[:PORT]],这条命令只是针对Ethernet和WIFI的连接方式;
(二)、Help命令与基本语法:
1.Help命令
一个开发人员在面对任何一种命令或者语言时,很难做到记住全部的知识点和技巧的,所以首先需学会的就是如何查找资料 解决问题,在adb命令中同样有帮助命令;Android基于Linux发展而来的,所以很多Linux命令和adb命令是通用的。
编号 | 命令 | 帮助 |
---|---|---|
1 | adb help | adb帮助命令,提示部分adb命令的使用方法 |
2 | < command > -help | command 帮助命令,适用于部分命令 |
3 | < command > -h | command 帮助信息,例:cat -h ,备注:适用于部分命令 |
2. 基本语法
adb [-d|-e|-s < serialNumber>] < command>
符号含义:
[]:表示可以省略;| :表示或即“|”左右命令是同一级别两种操作类型;< >:表示是命令的一部分,必须存在不可省略的;
其中;
d:这条命令目标对象时usb连接的设备(use USB device );
e: 命令的对象为网络连接设备包括WIFI和以太网(use TCP/IP device);
s < serialNumber> : 命令的对象的serialNumber编号[use device with given serial ];
二、开发中的adb命令
菜鸟基本命令
1. adb基本命令
挂载设备
adb remount
shell模式
adb shell
adb版本号
adb version
adb状态
adb get-state
开启adb Server
adb start-server;
关闭adb Server
adb kill-server
查看当前已连设备
adb devices
USB模式下重新启动
adb usb
网络连接设备
adb connect < host > [: < port > ]
断开连接
adb disconnect [< host> [:< port>]
重定向连接
adb forward < local> < remote>
- adb froward –no-rebind < local> < remote>
- adb forward –remove < local>
- adb forward –remove-all
安装apk
adb install path/xxx.apk
强制安装
adb install -r path/xxx.apk
卸载apk
adb uninstall <包名>
将文件push进设备
adb push < local files directories > [directories to device]
将设备中文件pull到PC
adb pull < device files directories > [local files directories]
重启
adb reboot
获取设备ID
adb get-product
获取设备序列号
adb get-serialno
Logcat命令
adb logcat -h
log日志
logcat [options] [filterspecs]
log等级过滤:
adb logcat * :[debug level]
debug level
- adb logcat *: V lowest level
- **adb logcat *: D Debug **
- **adb logcat *: I Info **
- **adb logcat *: W Warning **
- **adb logcat *: E Error **
- **adb logcat *: F Fatal **
- **adb logcat *: S| nothing is ever printed **
TAG 、Log级别过滤日志
adb logcat < filter-spec>
其中 < filter-spec>可以由多个 < tag>[:priority] 组成
例: adb logcat MainActivity:D HomeFragemt:I *:S
只输出TAG为MainActivity的Debug以上和 TAG为HomeFragemt的Info 以上的log日志,屏蔽其他的log日志;
清空日志
adb logcat -c
内核日志
adb shell dmesg
文件操作命令
进入目录
adb shell cd< directory >
返回上一级的目录
adb shell cd …
返回上一次的目录
adb shell cd -
列出目录内容
adb shell ls [-a] [-i] [-l] [-n] [-s]
打印当前目录
adb shell pwd
创建空文件夹
adb shell touch
adb shell touch /storage/emulated/0/temp.text |
创建目录
adb shell mkdir | [-vp] [-m mode] [dirname…]
参数:
-m, -mode
: 模式,设定权限
-p,--parents
: 递归创建目录
-v,-verbose
: 创建新目录都显示信息
例:
mkdir /storage/emulated/0/tmp
mkdir -m 777 /storage/emulated/0/tmp
mkdir -p /storage/emulated/0/tmp
复制文件夹
adb shel cp [options] < source> < dest>
移动/重命名文件夹move or rename files
adb shell mv[-fiv]t[options] < source> < dest>
-f:强制移动,若文件已经存在目标则直接覆盖
-i:若目标文件已经存在,会询问是否覆盖
例:
move :adb shell mv /sdcard/tmp /system/tmp
rename :adb shell mv /sdcard/tmp /sdcard/test
修改文件夹名字
adb shell mv [options] < source> < dest>
例: adb shell mv storage/emulated/0/test storage/emulated/0/temp_test
删除文件夹:
adb shell rm [-f|-i][options] [-dPRrvWx] < files or directory>
-f:强制删除文件,系统不提示
-r:强制删除文件夹包括里面的文件
删除目录
adb shell rmdir[-p] directory
-p:递归删除目录,只能删除空目录
复制文件
adb shell dd [operand…]
dd if =source of=targe
查看文件内容
adb shell cat [-beflnstuv] [-B bsize] [file…]
列出分区列表
adb shell df
查询文件或目录的磁盘使用空间
adb shell du [-H] [-L] [-P] [-a] [-d depth] [-s] [-cghikmnrx] [file…]
Package管理命令
NetWork网络命令
设备网络统计
adb shell netstat [-pWrxwutneal]
ping命令测试网络
adb shell ping [-aAbBdDfhLnOqrRUvV]
例:adb shell ping www.baidu
查看网络状态
adb shell netcfg
查看设置IP路由
adb shell ip [ OPTIONS ] OBJECT
查看WIFI的IP地址:
adb shell
ip -f inet addr show wlan0
dumpsys信息日志
adb shell dumpsys [options]
系统服务列表
adb shell dumpsys -l
adb shell serverce list
查看具体的系统服务
adb shell dumpsys [servicename]
windows服务为例:
adb shell dumpsys window
内存使用信息
adb shell dumpsys meminfo
详细使用:
adb shell dumpsys meminfo -h
cpu使用信息
adb shell dumpsys cpuinfo
电池使用信息Current Battery Service state
adb shell dumpsys battery
安装包信息
adb shell dumpsys package [-h] [-f] [—checkin] [cmd]…
adb shell dumpsys package <apk包名>可获取
apk基本信息,包括四大组件、Intent-flag 、版本号、权限、apk状态等信息;
备注:adb shell dumpsys package -h 查看具体参数和更多使用技巧:
Activity信息
adb shell dumpsys activity [options] [-a] [-c] [-p PACKAGE] [-h] [WHAT] …
备注:adb shell dumpsys activity -h 查看具体参数和更多使用技巧:
adb shell dumpsys activity | grep -i run
网络连接
adb shell dumpsys connectivity
查看当前网络状况
网络策略
adb shell dumpsys netpolicy
网络策略
adb shell dumpsys netpolicy
网络状态
adb shell dumpsys netstats
kernel休眠 【root权限拒绝Permission denied】
echo mem > /sys/power/state
kernel唤醒
echo on > /sys/power/state
停止APK,在终端直接输入:
adb shell am force-stop 包名
模拟输入命令
adb shell中的input 输入命令
input [<source>] <command> [<arg>...]
参数:
source
:input数据的来源【同样的数据不同的来源,Android输出不同结果】
command
:具体的命令【每种source都用各自不同的command】;
arg
:command的参数;
根据帮助信息【adb shell input help
:】可知,输入命令可以模拟以下几种类型的输入:
The commands and default sources are:
text < string> (Default: touchscreen)//1.触摸屏幕输入文本 text
keyevent [--longpress] < key code number or name> ... (Default: keyboard)//2.keyevent 键盘输入
tap < x> < y> (Default: touchscreen)//tap 事件
swipe < x1> < y1> < x2> < y2> [duration(ms)] (Default: touchscreen)//4.swipe 滑动事件
press (Default: trackball)//5.press按压事件`
roll < dx> < dy> (Default: trackball)//6.roll 滚动事件
输入文本 【input text
】
adb shell input text 例: adb shell input text hello word
用于向屏幕中获得焦点的EditText控件输入内容,可以用于输入解开屏锁是输入密码。
模拟键盘按键【input keyevent
】
adb shell input keyevent < key code number or name>
**例:**返回键 adb shell input keyevent 4
######常见的模拟按键ADB命令
- reboot 重启
- **input keyevent 3 Home键 **
- **input keyevent 4 返回键 **
- **input keyevent 5 呼叫键 **
- **input keyevent 6 挂断键 **
- input keyevent 24 音量+键
- input keyevent 25 音量-键
- input keyevent 26 电源键
- **input keyevent 28 Clera键键 **
- **input keyevent 61 Tab键 **
- **input keyevent 66 回车键键 **
- input keyevent 82 菜单锁
- input keyevent 224 息屏
- input keyevent 223 亮屏
备注:
除了常用的几个键值以外,其他的完全没有必死记硬背在 android.view.KeyEvent
这个类中有Android系统所有的按键常量的定义和键值,需要时可以再查看;
linux:
adb shell dumpsys activity | grep “mFocusedActivity”
windows:
adb shell dumpsys activity | findstr “mFocusedActivity”
滑动/长按事件【input swipe
】
adb shell input [touchscreen|touchpad|touchnavigation] swipe [duration(ms)]
参数:
touchscreen
:触摸屏;
touchpad
:触摸版;
touchnavigation
:导航栏;
duration
:时间;
操作 | 命令 |
---|---|
滑动事件 | adb shell input touchscreen swipe < x1> < y1> < x2> < y2> [duration(ms)] |
例: 从10 10经500毫秒滑动到500 500 | adb shell input touchscreen swipe 10 10 500 500 500 |
长按事件 | adb shell input touchscreen swipe < x1> < y1> < x1> < y1> [duration(ms)] |
例: 在 100 100 位置长按1000毫秒 | adb shell input touchscreen swipe 100 100 100 100 1000 |
滚动命令【input roll
】
adb shell input trackball roll
模拟轨迹球发送滚动命令;
adb shell input roll 可以对屏幕滚动操作
Press 命令【input press
】
adb shell input trackball press
这个命令是模拟轨迹球发送点击命令 ;
目前没发现其他用处;
旋转命令【input rotationevent
】
input rotationevent 0 1->90 2->180 3->270
将屏幕顺时针旋转到0°、90°、180°、270°
例如adb shell input rotationevent 2 就是把屏幕反过来
更多input事件信息
系统属性命令
查看系统信息 getprop
获取指定prop
adb shell getprop prop名称
修改 adb shell setprop prop名称 修改值
若只记住了名称的部分,可这样查
查看 adb shell getprop | grep 关键词
发布端口:
你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000
访问数据库SQLite3
adb shell
sqlite3
getprop
getprop命令的作用就是从系统的各种配置文件中读取一些设备的信息;
/init.rc
/default.prop
/system/build.prop
usage:getprop [NAME [DEFAULT]];
配合grep 管道命令:getprop | grep heap;
setprop
setprop [key] [value]
设置指定key的属性值
watchprops
watchprops
监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来
其实这三个命令都是toolbox的子命令,如果有兴趣的可以看在android源码中看到其对应的源码:
system/core/toolbox/
部分参数说明
dalvik.vm.heapgrowthlimit:默认给进程分配的可使用堆内存
dalvik.vm.heapsize:设置了android:largeHeap以后可使用的内存大小
ro.product.brand:手机品牌
ro.product.device:设备名称
ro.product.model:设备内部代号
ro.product.name:设备名称
ro.product.manufacturer:设备制造商
ro.serialno:设备序列号
ro.sf.lcd_density:设备屏幕密度
ro.config.ringtone:默认来电铃声
ro.config.notification_sound:默认通知铃声
ro.config.alarm_alert:默认闹钟铃声
dalvik.vm.stack-trace-file:trace文件放置目录
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 getprop 指令,会出现很多类似键值对的系统变量值
获取系统版本:adb shell getprop ro.build.version.release
获取系统api版本:adb shell getprop ro.build.version.sdk
cat命令
cat /proc/meminfo // 查看内存信息
cat /proc/cpuinfo // 查看CPU信息
cat /etc/camera.cfg
cat /sys/class/net/wlan0/address
cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户
1.检测手机中途是否有重启现象
adb shell ps | find “system_server”
adb shell getprop dev.bootcomplete 得到的值为1代表重启完成
2.检测手机的内存情况
adb shell busybox df -k | find “/data”
3.检测手机运行的时间
adb shell uptime
adb shell kill [PID] //杀死进程
adb 命令查看程序进程方便简洁高效
adb shell ps //查看所有进程列表,Process Status
adb shell ps|grep <package_name> //查看package_name程序进程
adb shell ps -x [PID] //查看PID进程状态
adb shell top|grep < package_name> //实时监听程序进程的变化
录屏命令
截屏[图片]
adb shell screencap < filename>
adb shell screencap /sdcard/screen.png
录制屏幕[Video]
adb shell screenrecord [options] < filename>
options:
size
< WIDTH*HEIGHT> defalt : 设备分辨率;
bit-rate
< RATE> defalt:4Mbps,可以增加比例提升视频清晰度,但是也会增大文件大小
ime-limit
< TIME> defalt:180秒(3分钟)
rotate
旋转输出90度。实验性功能
verbose
控制台显示日志信息,如果没有设置该参数,不会在录屏是显示任何信息
备注:adb shell screenrecord命令在android4.4(api 19)以上才可用
am命令
adb shell am
am命令即**activity manager
**(工具来执行不同的系统操作,如开启一个action,开启一个activity、强制停止一个线程、修改设备屏幕属性等等,adb shell命令格式如下:
am <command>
启动Activity
start [options] < INTENT>
启动activity通过指定的intent参数。具体intent参数参照官方表。
am参数 | Intent | 说明 |
---|---|---|
-n | component | 组件名称 格式为:包名/类名 |
-a | action | 指定Intent的执行动作,比如调用拨打电话组件 |
-d | data_url | 表示与动作要操纵的数据 |
-c | category | categary是一个字符串,提供了额外的信息,有关于能够处理这个Intent对象的组件种类 |
-e | extra | 传递给Intent的额外数据,以Bundle的形式定义,就是一些键值对 |
-t | mime_type | MIME类型 |
-f | flags | 各种类型的flag,很多是用来指定Android系统如何启动activity,还有启动了activity后如何对待他 |
-p | package | 包名 |
options参数:
-D:开启debug模式
-W:等待启动完成
–start-profiler:将profiler中的结果输出到指定文件中
-P:和–start-profiler一样,区别在于,在app进入idle状态时profiler结束
-R : 重复启动Activity,但每次重复启动都会关闭掉最上面的Activity
-S:关闭Activity所属的App进程后再启动Activity
–opengl-trace:开启OpenGL tracing
–user <USER_ID> :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
//使用Action方式打开系统设置-输入法设置
adb shell am start -a android.settings.INPUT_METHOD_SETTINGS
//使用组件名方式启动照相机功能
adb shell am start -n com.android.camera/.Camera
//打开拨号界面,并传递一个DATA_URI数据给拨号界面
am start -a android.intent.action.CALL -d tel:10086
启动和停止服务
启动服务
adb shell am startservice [参数] < INTENT>
停止服务
adb shell am stopservice [参数] < INTENT>
参数 --user < USER_ID> | current 指定哪些用户运行,如果不指定则使用当前用户
启动广播
adb shell am broadcast [参数] < INTENT>
参数 --user < USER_ID> | current 指定哪些用户运行,如果不指定则使用当前用户
杀死应用程序
adb shell am force-stop < PACKAGE>
杀死应用程序所有进程
adb shell am kill [options] < PACKAGE>
options参数如下:–user <USER_ID> :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
杀死与应用程序的包名称相关联的所有进程。该命令只会杀死安全的进程,不会影响用户体验。
杀死后台进程
adb shell am kill-all
杀死全部的后台进程
instrument监视
adb shell am instrument [options] < COMPONENT>
options参数如下:
-r: 以原始形式输出测试结果。该选项通常是在性能测试时与-e perf true一起使用。
-e < NAME> < VALUE>: 提供了以键值对形式存在的测试选项。格式一般为 -e < testrunner_flag> < value>[,< value>…].
-p < FILE>: 将profiling数据写入制定的文件
-w: 保持adb shell打开直至测试完成
–no-window-animation:关闭运行时window动画
–user < USER_ID> :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
命令样例:
adb shell am instrument -w com.android.phone.tests/com.android.phone.runners.FunctionalTestRunner
####查看当前设备CPU状态监视
top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序况
adb shell top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
-m num Maximum number of processes to display.默认很多
-n num Updates to show before exiting.
-d num Seconds to wait between updates.
-s col Column to sort by (cpu,vss,rss,thr).
-H Show threads instead of processes.
-h Display this help screen.
adb shell top -m 15 -n 5 -d 5 -s cpu
参数:
PID : progress identification,应用程序ID
S : 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
THR : 程序当前所用的线程数
VSS : Virtual Set Size虚拟耗用内存(包含共享库占用的内存)
RSS : Resident Set Size实际使用物理内存(包含共享库占用的内存)
PCY : 前台(fg)和后台(bg)进程
UID : User Identification,用户身份ID
Name : 应用程序名称
User 处于用户态的运行时间,不包含优先值为负进程
Nice 优先值为负的进程所占用的CPU时间
Sys 处于核心态的运行时间
Idle 除IO等待时间以外的其它等待时间
IOW IO等待时间
IRQ 硬中断时间
SIRQ 软中断时间
PID 进程id
PR 优先级
CPU% 当前瞬时CPU占用率
S 进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程
#THR 程序当前所用的线程数
VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PCY 调度策略优先级,SP_BACKGROUND/SP_FOREGROUND
UID 进程所有者的用户id
Name 进程的名称
备注:
adb shell top -m 15 -n 15 -d 3 -s cpu | findstr system >>C:\Users\yuzhu\Desktop\system_cpu.txt
将每三秒刷新一下,连续刷新15次,将这期间的系统进程信息记录在桌面system_cpu.txt中;
top -s cpu | grep <包名/pid>
grep 过滤;grep 一版不要和adb shell 一次直接执行,先adb shll ,然后再执行grep 命令;
Ctrl+C:停止检测; cls: 清除屏幕;color 0A:设置背景颜色和字体颜色;
查看指定APP内存使用情况:
adb shell dumpsys meminfo < pid/packageName >
以微信APP为例:微信包名:com.tencent.mm
adb shell dumpsys meminfo com.tencent.mm
参考资料:
ADB Usage Complete / ADB 用法大全
ADB Shell
Jian_Android命令篇
版权声明:本文标题:常用的ADB命令 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1728437477a1158253.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论