Android 常用 adb 命令总结

Android 常用 adb 命令总结

adb ( 全称为Android Debug Bridge)是一个C/S 架构命令行工具,起到调试桥的作用,是连接Android手机与PC端的桥梁,方便我们在电脑上对手机进行操作。adb 命令可用于执行各种设备操作,如安装和调试应用。

点击下载adb工具

ADB和Fastboo最新Google官方下载地址:https://developer.android.com/studio/releases/platform-tools?hl=zh-cn,或点击下面对应链接下载

Windows:https://dl.google.com/android/repository/platform-tools-latest-windows.zip?hl=zh-cn

Mac:https://dl.google.com/android/repository/platform-tools-latest-darwin.zip?hl=zh-cn

Linux:https://dl.google.com/android/repository/platform-tools-latest-linux.zip?hl=zh-cn

针对移动端 Android 的测试, 熟练使用adb命令, 将会为给 Android 测试带来很大的便利,其中很多命令也会用于自动化测试的脚本当中。

下面主要介绍,adb 和 adb shell 命令、linux 命令只列出,不详解。以上三个部分:

adb 命令

在配好环境变量的前提下,在命令窗口当中输入 adb help 或者直接输入 adb ,将会列出所有的选项说明及子命令。

下面正式开始介绍 adb 命令、adb shell 命令 ~ 坐稳扶好 ~ 发车了 ~~~

在开发或者测试的过程中,我们可以通过 adb 来管理多台设备,其一般的格式为:

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 命令和 adb shell 命令 。简单点讲,adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令。这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下,将整个 system/bin 目录复制了出来,然后一个一个的去试。

下面介绍一些常用的 adb shell 命令 (其中pm、am 命令比较庞大)

pm命令

pm全称Package Manager , 可以用pm命令获取到一些安装在 Android 设备上得应用信息,直接运行 adb shell 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 存放于 PC 端,请使用 adb install 安装

若 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全称Activity Manager,可以用am命去模拟各种系统的行为,直接运行 adb shell 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:

(q)uit: finish monitoring

** Activity starting: lysesoft.andftp

  • am force-stop  后跟包名,结束应用

例如:C:\Users\mkcshwzx>adb shell am force-stop lysesoft.andftp

  • am startservice  启动一个服务
  • am broadcast  发送一个广播

input命令

这个命令可以向 Android 设备发送按键事件

  • 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命令

执行 UI automation tests , 获取当前界面的控件信息

  • runtest:执行UI自动化测试

runtest是执行测试的关键命令,用来执行jar包的测试用例。

  • dump:获取控件信息

adb shell uiautomator dump

不加 [file] 选项时,默认存放在 sdcard 下

ime命令

运行 adb shell 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命令

获取设置设备屏幕分辨率,运行 adb shell 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 命令

请参考官方文档:https://developer.android.com/studio/test/other-testing-tools/monkey?hl=zh-cn

运行adb shell monkey -help 输出简单的使用指南。

再此补充一个引号的用途:
场景1、在 PC 端执行 monkey 命令,将信息保存至 D 盘 monkey.log,会这么写:

adb shell monkey -p com.android.settings 5000 > D:\monkey.log

场景2、在 PC 端执行 monkey 命令,将信息保存至手机的 Sdcard,需要这么写:

adb shell "monkey -p com.android.settings 5000 > sdcard/monkey.log"

如果不加上引号肯定会报错,因为不加引号是写向了 PC 端当前目录的 sdcard 目录下,而非写向手机的 Sdcard。

settings命令

在settings中,settings get用来获取信息,settings put用来写入信息,运行adb shell 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命令

查看 Android 设备的参数信息,只运行 adb shell getprop,结果以 key : value 键值对的形式显示,如要获取某个 key 的值:

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 命令

操作你的 Android 设备,常用到的命令,只列出,不详解!

cat、cd、chmod、cp、date、df、du、grep、kill、ln、ls、lsof、netstat、ping、ps、rm、rmdir、top、touch、重定向符号 ">" ">>"、管道 "|"

有些可能需要使用 busybox ,另外建议 windows 下 安装一个 Cygwin,百度百科 Cygwin

 

拜拜ヾ(•ω•`)o

原文链接:https://www.cnblogs.com/luzhuangzhi/p/17096564.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android 常用 adb 命令总结 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 直播回顾 | 点击率提升400%,Ta是怎么做到的?

    Discovery第18期直播已于3月30日圆满结束,本期直播邀请天眼查做客直播间,从天眼查与华为Push用户增长服务合作历程切入,聚焦用户增长,分享提升应用活跃度和渠道ROI的经验与见解。一起来回顾本期精彩内容吧! 【精彩对话】 Q1: 天眼查为什么选择华为Push用户增长服务实现拉新、促活和转化? 刘树维:天眼查作为国内领先的商业查询平台,我们发现用户对…

    Android 2023年4月17日
    00
  • 应用内支付服务现网、沙盒环境下常见关键事件的对比与总结

    在集成和调试订阅型商品时,我们会依赖沙盒环境来进行模拟实际场景。 订阅型商品的购买流程和一次性商品的购买流程类似,但订阅还有其他细节场景,比如续订成功或失败,续订周期时长等。沙盒环境下的订阅续订时间会比正常情况更快,引入“时光机”概念帮助您快速测试您应用的订阅场景。比如订阅周期为1周,商品在3分钟后发生续期,此时订阅型商品有效期延长了3分钟。 下面对沙盒环境…

    Android 2023年4月18日
    00
  • 鲸鸿动能广告接入如何高效变现流量?

    广告是App开发者最常用的流量变现方法之一,当App拥有一定数量用户时,开发者就需要考虑如何进行流量变现,帮助App实现商业可持续增长。 鲸鸿动能流量变现服务是广告服务依托华为终端强大的平台与数据能力为开发者提供的App流量变现服务,开发者通过该服务可以在自己的App中获取并向用户展示精美的、高价值的广告内容,并从中获得广告收益。开发者集成鲸鸿动能服务进行广…

    Android 2023年5月11日
    00
  • 接入HMS Core应用内支付服务过程中一些常见问题总结

    华为HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程。该服务支持客户端和服务端两种开发形式,具体可以参考官方文档。 往期文章:常见问题总结(2)中分享总结了有关无法拉起支付页面的常见问题,本文将对近期开发者们较为关注的一些集成应用内支付服务过程中的问题进行汇总,并提出解决方案。 问题1:…

    Android 2023年4月18日
    00
  • 免费广告效果监测服务,实现全链路营销效果跟踪

    广告主们都希望以低预算获得更高的广告投放收益,在投放广告后,想要了解高回报的渠道,往往需要收集并分析繁杂的数据,耗时耗力。通过广告监测,广告主可以准确的追溯用户渠道来源,看到不同流量的用户价值,分析广告投放效果,从而指导广告的出价和投放素材的优化,把预算花在刀刃上。 针对广告主们广告监测的需求,华为分析服务提供免费的广告监测能力,为有广告监测需求的广告主节省…

    Android 2023年4月17日
    00
  • Opengl ES之矩阵变换(上)

    前言 说到矩阵变换,我们第一时间想到的就是大学时代的线性代数这些复杂的东西,突然有了一种令人从入门到放弃的念头,不慌,作为了一个应用层的CV工程师,在实际应用中线性代数哪些复杂的计算根本不用我们自己去算,绝大部分情境下直接使用Matrix这个类或者glm这个库即可。 关于矩阵与向量的相关知识,矩阵的加减乘除等规则,这里就不展开细说,感兴趣的同学自行查阅线性代…

    Android 2023年4月18日
    00
  • 用户订阅付费如何拆解分析?看这篇就够了

    会员制的订阅付费在影音娱乐行业中已相当普及,近几年,不少游戏厂商也开始尝试订阅收费模式。在分析具体的用户订阅偏好以及订阅付费模式带来的增长效果时,我们常常会有这些疑问: 如何从用户的整体付费行为中具体拆解订阅付费事件并分析? 想要了解当前应用内用户的整体订阅概况? 订阅用户和非订阅用户在留存与付费偏好是否存在差异? …… 而这些都能在华为分析服务—订阅分析中…

    Android 2023年4月25日
    00
  • scrollView 嵌套 recyclerview 时 BaseQuickAdapter 九宫格图片拖拽到底部删除

    九宫格图片布局,长按直接拖拽图片,长按时显示底部删除布局,拖拽到删除布局处松手可删除布局,最后添加按钮不可拖拽,基于 BaseQuickAdapter 基础上实现 BaseQuickAdapter 确实很好用,简化我们的实现代码,它本身也集成了一套拖拽实现,不过目前无法完美的满足上面的需求,需要做一些修改 1、首先自定义好九宫格布局,末尾是一个 + 号,这个…

    Android 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部