Android 常用 adb 命令总结
点击下载adb工具
Windows:https://dl.google.com/android/repository/platform-tools-latest-windows.zip?hl=zh-cn
Linux:https://dl.google.com/android/repository/platform-tools-latest-linux.zip?hl=zh-cn
下面主要介绍,adb 和 adb shell 命令、linux 命令只列出,不详解。以上三个部分:
adb 命令
下面正式开始介绍 adb 命令、adb shell 命令 ~ 坐稳扶好 ~ 发车了 ~~~
adb [-e | -d | -s <设备序列号>] <子命令>
adb devices , 获取设备列表及设备状态
C:\Users\mkcshwzx>adb devices
List of devices attached
47e965af device
adb get-state , 获取设备的状态
C:\Users\mkcshwzx>adb get-state
device设备的状态有 3 钟,device , offline , unknowndevice:设备正常连接offline:连接出现异常,设备无响应unknown:没有连接设备
adb kill-server , adb start-server , 结束 adb 服务,启动 adb 服务,通常两个命令一起用
一般在连接出现异常,使用 adb devices 未正常列出设备,设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务
adb logcat , 打印 Android 的系统日志
adb logcat
打印log至命令窗口,Ctrl + C停止打印log
adb logcat -c
-c 清空所有的日志缓存信息
adb logcat -g
-g 查看日志缓冲区信息
adb logcat -t
-t 输出最近的几行日志, 输出完退出, 不阻塞;
例如:adb logcat -t 5
adb logcat -s
设置输出日志的标签, 只显示该标签的日志;
例如:adb logcat -s System.out
adb logcat -v time > D:\Logcat\logcat.log
-v 设置日志的输出格式, 注意只能设置一项
例如:日志保存到D:\Logcat\目录下
adb logcat -v time > D:\Logcat\logcat.log
adb logcat | grep wifi
过滤固定字符串 : 只要命令行出现的日志都可以过滤, 不管是不是标签
例如:adb shell | findstr wifi
说明:
管道符“|”:可以把标准的输入流与标准的输出流进行合并,或者把某个命令的标准输出流作为另一个命令的标准输入流。
exit退出shell。
由于grep为linux命令,运行单条adb shell 时并没有进入linux
shell环境,并不能用grep等其他linux命令,只能用window cmd的命令。在这里可以用findstr来代替grep,使用方法为
findstr/grep [keyword]
adb bugreport , 打印dumpsys、dumpstate、logcat的输出,也是用于分析错误
输出比较多,建议重定向到一个文件中
例如:adb bugreport > d:\bugreport.log
adb install , 安装应用,
adb install test.apk
安装应用,这里的xx.apk是电脑上的路径,例如:adb shell instal E:/test.apk。
windows 下如果需要安装含有中文名的 apk,需要对 adb 进行修改,百度可以找到做出修改的adb , 支持中文命令的 apk,请自行搜索
adb -s xxxxxxxx install xx.apk
指定序列号的设备安装。注意:xxxx 就是上面提到adb devices 中device前面展示的手机序列号。
adb install -r test.apk
-r 覆盖安装,保留存储数据
adb install -t test.apk
允许安装测试包
adb install -s test.apk
将应用程序安装到sd卡上
adb install -d test.apk
允许降级覆盖安装,忽略版本号
adb uninstall , 卸载应用,后面跟的参数是应用的包名,请区别于 apk 文件名
adb uninstall com.baidu.BaiduMap
卸载应用
adb uninstall -k com.baidu.BaiduMap
'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录
adb pull , 将 Android 设备上的文件或者文件夹复制到本地
注意权限,复制系统权限的目录下的文件,需要 root,并且一般的 Android 机 root 之后并不能使用命令去复制,而需要在手机上使用类似于 RE 的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件。
adb pull sdcard/pull.txt D:\
复制 Sdcard 下的 pull.txt 文件到 D 盘:
adb pull sdcard/pull.txt D:\name.txt
如果需要重命名为 name.txt:
adb push , 推送本地文件至 Android 设备
adb push D:\push.txt sdcard/
推送 D 盘下的 push.txt 至 Sdcard:
adb root 、adb remount 只针对类似小米开发版的手机有用
可以直接已这两个命令获取 root 权限,并挂载系统文件系统为可读写状态
adb reboot 重启 Android 设备
adb reboot edl
重启设备,进入线刷模式。端口为9008
adb reboot bootloader
bootloader , 重启设备,进入 fastboot 模式
adb reboot recovery
recovery , 重启设备,进入 recovery 模式,经常刷机的同学比较熟悉这个模式
adb forward , 将 宿主机上的某个端口重定向到设备的某个端口
adb forward tcp:8080 tcp :8082
执行该命令后所有发往宿主机 8080 端口的消息、数据都会转发到 Android 设备的 8082 端口上,因此可以通过远程的方式控制 Android 设备。
adb connect 远程连接 Android 设备
手机、PC处于相同的网络下,手机 root,安装应用 adbWireless,启动应用后点击界面中间的按钮
接着运行 adb connect 192.168.28.92 , 即可通过无线的方式连接手机,缺点是速度比较慢
adb shell 命令
下面介绍一些常用的 adb shell 命令 (其中pm、am 命令比较庞大)
pm命令
pm list package 列出安装在设备上的应用
adb shell pm list package
不带任何选项:列出所有的应用的包名(不知道怎么找应用的包名的同学看这里)
adb shell pm list package -s
-s:列出系统应用
adb shell pm list package -3
-3:列出第三方应用
adb shell pm list package -f
-f:列出应用包名及对应的apk名及存放位置
adb shell pm list package -i
-i:列出应用包名及其安装来源,结果显示例子:
C:\Users\mkcshwzx>adb shell pm list package -i
package:com.sohu.inputmethod.sogou installer=null
adb shell pm list package -f -3 -i baidu 命令最后增加 FILTER:过滤关键字,可以很快查找自己想要的应用
例如:查找三方应用中百度的包名、apk存放位置、安装来源:
C:\Users\mkcshwzx>adb shell pm list package -f -3 -i baidu
package:/product/preload/Baidusearch/Baidusearch.apk=com.baidu.searchbox installer=null
package:/product/preload/BaiduMap/BaiduMap.apk=com.baidu.BaiduMap installer=null
pm path 列出对应包名的 .apk 位置
adb shell pm path test.apk
例如:C:\Users\mkcshwzx>adb shell pm path com.baidu.searchbox
package:/product/preload/Baidusearch/Baidusearch.apk
pm list instrumentation 列出含有单元测试 case 的应用
后面可跟参数 -f (与 pm list package 中一样),以及 [TARGET-PACKAGE]
pm dump 后跟包名,列出指定应用的 dump 信息
adb shell pm dump com.baidu.searchbox
显示太多,请自行输入命令查看
pm install 安装应用
adb shell pm install xx.apk
这里的xx.apk是Android设备内存中的路径,必须是绝对路径。一般建议放在/sdcard/下或/data/local/tmp/路径下。
其实adb install xx.apk = adb push E:\xx.apk /data/local/tmp + adb shell pm install /data/local/tmp/xx.apk
例如:
C:\Users\mkcshwzx>adb push E:\ftp.apk /data/local/tmp
E:\ftp.apk: 1 file pushed, 0 skipped. 21.9 MB/s (2769612 bytes in 0.121sC:\Users\mkcshwzx>adb shell pm install /data/local/tmp/ftp.apk
Success
adb shell pm install -r xx.apk
重新安装该程序,保存数据
adb shell pm install -t xx.apk
允许测试包
adb shell pm install -d xx.apk
允许降级覆盖安装
若 apk 存放于 Android 设备上,请使用 pm install 安装
pm uninstall 卸载应用, 后面跟的参数都是应用的包名
adb shell pm uninstall xx.apk
例如卸载安装的AndFTP应用:C:\Users\mkcshwzx>adb shell pm uninstall lysesoft.andftpSuccess
pm clear 清除应用数据, 后面跟的参数都是应用的包名
例如清除AndFTP应用数据:C:\Users\mkcshwzx>adb shell pm clear lysesoft.andftp
Success
am命令
am start 启动一个 Activity,am start 后面跟的参数是应用的包名。
adb shell am start com.baidu.BaiduMap
以启动百度地图为例
adb shell am start -S com.baidu.BaiduMap
-S 先停止目标应用,再启动
adb shell am start -W com.baidu.BaiduMap
-W 等待应用完成启动
adb shell am start -a android.intent.action.VIEW -d https://www.cnblogs.com/luzhuangzhi/
启动默认浏览器打开一个网页
adb shell am start -a android.intent.action.CALL -d tel:10086
启动拨号器拨打 10086
am instrument 启动一个 instrumentation
单元测试或者 Robotium 会用到
am monitor 监控 crash 与 ANR
adb shell am monitor
例如:C:\Users\mkcshwzx>adb shell ammonitor
Monitoring activity manager... available commands:
(quit: finish monitoring
** Activity starting: lysesoft.andftp
am force-stop 后跟包名,结束应用
例如:C:\Users\mkcshwzx>adb shell am force-stop lysesoft.andftp
- am startservice 启动一个服务
- am broadcast 发送一个广播
input命令
input text 发送文本内容,不能发送中文
adb shell input text test123456
前提先将键盘设置为英文键盘
input keyevent 发送按键事件
adb shell input keyevent KEYCODE_HOME
模拟按下 Home 键,源码里面有定义:
public static final int KEYCODE_HOME = 3;
因此可以将命令中的 KEYCODE_HOME 替换为 3
可自行百度 keyevent 常用键列表
官方文档:https://developer.android.com/reference/android/view/KeyEvent
input tap 对屏幕发送一个触摸事件
adb shell input tap 500 500
点击屏幕上坐标为 500 500 的位置
input swipe 滑动事件
adb shell input swipe 900 500 100 500
从右往左滑动屏幕
adb shell input swipe 500 500 501 501 2000
模拟长按事件
其实就是在小的距离内,在较长的持续时间内进行滑动,最后表现出来的结果就是长按动作
screencap截图命令
adb shell screencap -p /sdcard/DCIM/screenTest.png
截屏图片,保存至 /sdcard/DCIM/ 目录下
screenrecord屏幕录制命令
adb shell screenrecord sdcard/record.mp4
执行命令后操作手机,ctrl + c 结束录制,录制视频保存至 sdcard目录下
uiautomator命令
runtest:执行UI自动化测试
runtest是执行测试的关键命令,用来执行jar包的测试用例。
dump:获取控件信息
adb shell uiautomator dump
不加 [file] 选项时,默认存放在 sdcard 下
ime命令
adb shell ime list -s
列出设备上的输入法
C:\Users\mkcshwzx>adb shell ime list -s
com.iflytek.inputmethod/.FlyIME
com.sohu.inputmethod.sogou/.SogouIME
com.android.inputmethod.latin/.LatinIME
com.android.inputmethod.pinyin/.PinyinIME
adb shell ime set com.iflytek.inputmethod/.FlyIME
选择输入法
wm命令
wm size 查看和设置显示分辨率
adb shell wm size
获取设备分辨率
adb shell wm size 720*1080
将设备分辨率设置为720*1080
adb shell wm size reset
重置分辨率
wm density 查看和设置显示密度
adb shell wm density
查看当前显示密度
adb shell wm density 320
将显示密度设置为320
adb shell wm density reset
重置显示密度
wm overscan 设置显示区域,依次为左、上、右、下
adb shell wm overscan 100,200,300,400
设置显示区域
adb shell wm overscan reset
重置显示区域
monkey 命令
运行adb shell monkey -help 输出简单的使用指南。
场景1、在 PC 端执行 monkey 命令,将信息保存至 D 盘 monkey.log,会这么写:
adb shell monkey -p com.android.settings 5000 > D:\monkey.log
adb shell "monkey -p com.android.settings 5000 > sdcard/monkey.log"
如果不加上引号肯定会报错,因为不加引号是写向了 PC 端当前目录的 sdcard 目录下,而非写向手机的 Sdcard。
settings命令
adb shell settings get system screen_brightness_mode
获取亮度是否为自动获取
adb shell settings get system screen_brightness
获取当前亮度值
adb shell settings put system screen_brightness 200
更改亮度值(亮度值在0—255之间)
adb shell settings get system screen_off_timeout
获取屏幕休眠时间
adb shell settings put system screen_off_timeout 1800000
更改休眠时间,30分钟
adb shell settings get global auto_time
获取日期时间选项中通过网络获取时间的状态,1为允许、0为不允许
adb shell settings put global auto_time 0
更改日期状态,从1改为0
adb shell settings get global adb_enabled
获取USB调试状态,1为开启、0为关闭
adb shell settings put global adb_enabled 1
更改USB调试状态,从0改为1
adb shell settings get global wifi_on
获取Wi-Fi开关状态,1为开启、0为关闭
adb shell svc wifi enable
开启Wi-Fi
adb shell svc wifi disable
关闭Wi-Fi
adb shell settings get secure android_id
获取Android_id
dumpsys命令
dumpsys,默认打印出当前系统所有 service 信息
adb shell dumpsys | findstr DUMP
在dumpsys后面可加上具体的服务名需要列出当前运行的服务
adb shell dumpsys display | findstr DisplayDeviceInfo
获取设备分辨率
adb shell dumpsys battery
获取设备电池信息
adb shell dumpsys cpuinfo
获取 cpu 信息
dumpsys meminfo
adb shell dumpsys meminfo
获取内存信息
adb shell dumpsys meminfo com.baidu.BaiduMap
后面加上包名,获取具体应用的内存信息
dumpsys activity
adb shell dumpsys activity
获取 Activity 信息,加上-h可以获取帮助信息
adb shell dumpsys activity top
获取当前界面的UI信息
adb shell dumpsys activity top | findstr ACTIVITY
获取当前界面的Activity
dumpsys package
adb shell dumpsys package
获取 package 信息,加上-h可以获取帮助信息
adb shell dumpsys package com.baidu.BaiduMap
后面加上包名,获取某个包的信息
adb shell dumpsys notification
获取通知信息
adb shell dumpsys wifi
可以获取到当前连接的wifi名、搜索到的wifi列表、wifi强度等
adb shell dumpsys power
获取电源管理信息
adb shell dumpsys telephony.registry
获取电话信息
例如: mCallState值为0,表示待机状态、1表示来电未接听状态、2表示电话占线状态
mCallForwarding=false #是否启用呼叫转移
mDataConnectionState=2 #0:无数据连接 1:正在创建数据连接 2:已连接
mDataConnectionPossible=true #是否有数据连接
mDataConnectionApn= #APN名称 等
getprop命令
adb shell getprop ro.build.version.sdk
获取设备的 sdk 版本
adb shell getprop ro.product.model
查看设备型号
adb shell getprop ro.build.version.release
查看 Android 系统版本
adb -d shell getprop ro.product.brand
查看手机厂商名称
adb -d shell getprop ro.product.model
查看手机设备型号
adb shell getprop ro.build.version.incremental
查看版本号
其他命令
adb shell cat /sys/class/net/wlan0/address
查看手机MAC地址
adb shell cat /proc/meminfo
查看手机内存信息
adb shell df
查看手机存储信息
adb shell tcpdump -i any -p -s 0 -w /data/123.pcap
抓取网络包
adb shell ip addr show wlan0
查看wlan0 (Wi-Fi IP地址
Linux 命令
cat、cd、chmod、cp、date、df、du、grep、kill、ln、ls、lsof、netstat、ping、ps、rm、rmdir、top、touch、重定向符号 ">" ">>"、管道 "|"
有些可能需要使用 busybox,另外建议 windows 下 安装一个 Cygwin,百度百科 Cygwin
拜拜ヾ(•ω•`o