Android 常用 adb 命令总结

科技资讯 投稿 6200 0 评论

Android 常用 adb 命令总结

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 , unknown
device:设备正常连接
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.121s

C:\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

编程笔记 » Android 常用 adb 命令总结

赞同 (30) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽