【2024软件测试面试必会技能】adb命令操作

news2025/1/15 22:08:48

前言:

adb的全称为(Android Debug Bridge)就是调试桥的作用。Adb 命令存放在 SDK 的Tools文件夹下,又称为手机和电脑连接的桥梁命令。

借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:

  • 快速更新设备或手机模拟器中的代码,如应用或Android系统升级;
  • 在设备上运行shell命令;
  • 管理设备或手机模拟器上的预定端口;
  • 在设备或手机模拟器上复制或粘贴文件。

adb命令操作

(闲话:最近看新闻说谷歌推出新的安卓后缀为aab;apk文件大家肯定都非常熟悉了,目前安卓应用程序都是基于apk的应用程序包。而在2021年8月之后,apk有可能会成为历史,被aab(全称为:Android App Bundle)所取代,因为Android App Bundle不支持apk文件,所以后续安卓应用程序包后缀都将更新为aab格式。)

adb connect 模拟器的udid    # 让电脑和手机相连接

adb disconnect 需断开的局域网ip     断开设备命令

adb devices                          # 查看电脑连接手机的数量/基本信息

adb install apk路径               # 下载app    

adb install -r apk路径           # 覆盖安装app

adb uninstall 包名                # 卸载app

adb pull <手机路径>   <电脑路径>        # 从手机中拉取信息到本地电脑上

adb push <电脑路径>  <手机路径>      # 从本地电脑推送信息到手机上

adb bugreport                                      # 输出日志包括logcat日志,同时也包括功耗,cpu等信息日志

adb version                                          #  查看adb版本

adb shell pm list packages                  # 查看所有的应用包名

adb shell dumpsys activity                  # 查看当前活动的包的信息

adb shell dumpsys window | findstr mCurrentFocus             # 查看正在运行的包名

adb shell cat /proc/cpuinfo                                                    # 查看 cpu信息 (百度有参考文件)

adb shell wm size                                                                 # 查看分辨率

adb shell dumpsys battery                                                   # 查看电池信息 (百度有参考文件)

adb shell screencap -p /sdcard/sc.png                               # 截屏  (截屏在手机里面sdcard)

adb shell dumpsys batterystats 包名                                 # 获取包名应用的耗电量

adb shell getprop ro.build.version.release                          # 获取安卓系统版本号

adb shell  再输入su 再输入 cat /data/misc/wifi/*.conf        # 查看连接过的wifi 信息(前提是手机需要root,否则su命令无效)

adb shell cat /sys/class/net/wlan0/address                       # 获取mac地址(物理地址)

adb shell cat /proc/meminfo                                              #  查看当前内存占用

adb shell reboot                                                                         # 重启手机

adb shell top             #  查看设备cpu和内存占用情况(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量)

adb shell top -m 6                                                           #  查看占用内存前6的app

adb shell top -n 1                                                            # 刷新一次内存信息,然后返回

adb shell procrank                                                          #  查询各进程内存使用情况

如果电脑突然无法连接虚拟机/真机时可进行adb服务关闭重启操作:

adb kill-server      # 关闭adb服务

adb start-server   # 启动adb服务

adb logcat -v time >电脑路径\文件.txt                                 # 打印日志文件并上传到电脑上

adb shell dumpsys package 包名         # 查询app相关详细信息,包括action,codepath,version,需要的权限等等信息

adb shell pm path 包名    # 查看app的路径

 adb shell am start -n 包名/.app程序入口事件名称    # 启动app

 adb shell pm clear 包名         # 删除与包相关的所有数据,清除数据和缓存

adb shell ps -ef |findstr com.sky.jisuanji        # 查看某个app的进程相关信息(有些安卓机不需要加 -ef )

 adb shell kill -9 pidNumber    # 杀掉某个进程,一般用于模拟某个bug复现 (kill -9强制杀死进程)

adb shell dumpsys meminfo 包名                  # 查看某一个app的内存占用

如果电脑连接多台设备的时候使用 -s 指定设备,进行安装卸载等操作

目前电脑上连接了两种设备;mumu模拟器 和 华为手机

adb -s 指定设备 install apk路径               # 在指定设备上下载app    

 

adb -s 指定设备 uninstall 包名                # 在指定设备上卸载app

进入手机超级终端

adb shell           #  进入安卓的linux系统,可使用部分linux命令进行操作 退出exit

例如,输入linux命令找到一个指定的文件夹(Movies): find / -name Movies -type d

然后cd 进入到Movies 文件夹内 :cd /data/media/0/Movies

再新建一个文件文件:echo hello,word > app.txt

在输入删除命令:rm - rf app.txt  Movies文件夹内的app.txt文件被删除

获取包名的命令:

1)aapt dump badging apk文件路径       # 反编译方式:直接查看apk的包名

2)adb shell dumpsys window | findstr mCurrentFocus     # 查看正在运行的包名

3)获取首次应用的活动名称可以通过 启动一次随机 monkey命令来获取(如果第二种获取包名的activity名称不对,可以通过下面的方式)

adb shell monkey -p 包名 -v -v -v 1

利用adb命令按住按键:

adb shell input keyevent KEYCODE_VOLUME_UP    # 按下音量减小键

 Android 键盘键名和键值列表   转载至:o小兵o :https://www.cnblogs.com/xiaozhaoboke/p/10029488.html

查看日志:

=======logcat 缓冲区日志 (包括radio,system,main,event);=======
radio 存放通信的日志,比如通话短信等;
event 是表示手机按键输出等事件日志等;
main 指的是手机的应用软件的日志
system 是系统组件日志

默认输出main 和system 的日志,如果需要指定,则使用:
adb logcat -b 指定缓冲区 如:adb logcat -b main
也可以输出到文件 adb logcat -b main >d:\main.log 

adb logcat [选项] [过滤项],其中选项和过滤项在中括号 [] 中,说明这是可选的。

adb logcat                # 查看手机操作系统所有日志信息

-s 选项:过滤日志标签 == 指定查看某个标签的日志信息

命令:adb logcat -s "VideoCapabilities"

 -c 选项:  清空所有的日志缓存信息

命令:adb logcat -c

-v 选项:  自定义日志格式:

adb logcat -v time:可以查看日志的输出时间;
adb logcat -v threadtime:可以查看日志的输出时间和线程信息;
adb logcat -v process:格式为“优先级(进程ID):日志信息"的日志;
adb logcat -v tag:格式为"优先级/标签:日志信息"的日志;
adb logcat -v thread:格式为"优先级(进程ID:线程ID)标签:日志内容"的日志;
adb logcat -v raw:只输出日志信息,不附加任何其他信息; (常用推荐)
adb logcat -v long:格式为“[日期时间进程ID:线程ID优先级/标签]日志信息”的日志;(常用推荐)

“-f”选项:

将日志输出到文件

命令:adb logcat -v long -f 手机的文件路径  或者 adb logcat -f 手机的文件路径 -v long

过滤项解析:过滤项格式:<tag>[:priority], 标签:日志等级,默认的日志过滤项是"*:I"

  • V:Verbose(明细);
  • D:Debug(调试);
  • I:Info(信息);
  • W:Warn(警告);
  • E:Error(错误);
  • F:Fatal(严重错误);
  • S:Silent(Superalloutput)(最高的优先级,可能不会记载东西)

举例:
1、显示Error以上级别的日志:adb logcat *:E

2、可以同时设置多个过滤器,如:adb logcat -s System:W,memtrack:E 输出System标签Warn以上级别和 memtrack 标签 Error 以上级别的日志

3、输出过滤日志级别的日志到指定文件

 写一个简单的批处理文件

===如何截屏并下载到PC的d:盘下的--批处理文件:
1,可以新建一个txt文件,然后在第一行把截屏命令输入进去,
2,在第二行输入从手机上下载文件到电脑上的命令
3,保存并命名成 .bat 格式,然后双击文件即可 ===

如下图:

常见错误及解决方法

1) 在输入adb命令时,显示 more than one device and emulator (表示不止一个设备连接)如果电脑连接多台设备,可以使用adb -s 包名(指定设备)shell  ;如果只有一台设备并且有 offline的状态,说明ADB本身的bug导致,需要重启应用

2) 使用adbshell命令时出错,如下图所示

问题分析:
出现此问题是由于端口占用引起,把占用端口的进程kill掉
解决方法:
adb nodaemon server
netstat- ano | findstr "5037”
然后去任务管理器关掉相应进程

  总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

​​​

​​​

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1459009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机功能简介:EC, NVMe, SCSI/ISCSI与块存储接口 RBD,NUMA

一 EC是指Embedded Controller 主要应用于移动计算机系统和嵌入式计算机系统中&#xff0c;为此类计算机提供系统管理功能。EC的主要功能是控制计算机主板上电时序、管理电池充电和放电&#xff0c;提供键盘矩阵接口、智能风扇接口、串口、GPIO、PS/2等常规IO功能&#xff0c;…

C#分部类的应用:记录学生信息

目录 一、分部类及其用途 二、实例 再发一个分部类的应用&#xff0c;巩固一下。 一、分部类及其用途 C#中的部分类也被称为分部类。 C#中的部分类是一种将类的定义分成多个部分&#xff0c;每个部分都位于自己的文件中&#xff0c;然后在编译时合并在一起的机制。 部分类…

SNAT与DNAT公私网地址转换

前言 SNAT和DNAT是两种重要的网络地址转换技术&#xff0c;它们允许内部网络中的多个主机共享单个公共IP地址&#xff0c;或者将公共IP地址映射到内部网络中的特定主机。这些技术在构建企业级网络和互联网应用程序时非常重要&#xff0c;因为它们可以帮助保护内部网络安全&…

75.SpringMVC的拦截器和过滤器有什么区别?执行顺序?

75.SpringMVC的拦截器和过滤器有什么区别&#xff1f;执行顺序&#xff1f; 区别 拦截器不依赖与servlet容器&#xff0c;过滤器依赖与servlet容器。拦截器只能对action请求(DispatcherServlet 映射的请求)起作用&#xff0c;而过滤器则可以对几乎所有的请求起作用。拦截器可…

阿里云服务器操作系统有哪些?如何选择?

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

深入理解java虚拟机---自动内存管理

2.2 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的区域随着虚拟机进程的启动而一直存在&#xff0c;有些区域则是依赖用户线程的启动和结束而建立和销…

[word] word定时自动保存功能的作用是什么 #知识分享#学习方法#媒体

word定时自动保存功能的作用是什么 word定时自动保存功能的作用是什么 这是word提供的一个保护用户文档的功能&#xff0c;一般情况下是为了预防在未知原因的情况下&#xff0c;用户电脑关闭&#xff0c;或者不小关掉Word&#xff0c;导致正在使用的文档丢失&#xff0c;给用户…

华清远见作业第三十九天——Qt(第一天)

思维导图&#xff1a; 登录界面&#xff1a; 代码&#xff1a; #include "mainwindow.h" #include<QToolBar> #include<QPushButton> MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {this->resize(600,400);this->setFixedSize…

Vue+SpringBoot打造生活废品回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案&#xff0c;旨在鼓…

C++拷贝构造函数与赋值运算符重载

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、拷贝构造函数 1.概念 在现实生活中&#xff0c;可能存在一个与你一样的自己&#xff0c;我们称其为双胞胎。 那在创…

day1:组件的代码实现

思维导图 设计一个登录界面 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->setWindowFlag(Qt::FramelessWindowHint);this->resize(700,550);this->setWindowIcon(QIcon("D:/学校工作/截图/b1.jpg"));/***…

经验分享——Jmeter压力测试工具安装,使用

之前测试都是简单的写个线程模拟请求测试&#xff0c;后面经同事推荐这款压力测试工具。真的很好用&#xff0c;使用过几次了&#xff0c;于是把自己使用过程中遇到的问题&#xff0c;以及相关配置分享出来。希望给需要用到的人一些帮助。 一 下载 首选下载这款工具&#xff…

【蜂窝物联】公寓WiFi全覆盖解决方案

项目背景 随着移动设备越来越普及&#xff0c;人们对于网络的需求愈发强烈&#xff0c;WIFI覆盖也逐渐进入网民的视野中。部署无线网络不仅能提高出租屋服务水平及竞争力&#xff0c;同时也可以为出租屋提高收入&#xff0c;蜂窝为出租屋房东提供一套完整的解决方案。 01 需求…

SICTF Round#3 wp web

web hacker sql无列名注入&#xff1b; 提示查询username参数&#xff0c;flag在flag表中&#xff1b; 传参测试发现&#xff0c;union select 可用&#xff0c;空格被过滤可以使用/**/代替 &#xff0c;or也被过滤了且无法大小写、双写等绕过&#xff0c;导致无法查询flag表…

【开源】SpringBoot框架开发高校宿舍调配管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能需求2.1 学生端2.2 宿管2.3 老师端 三、系统展示四、核心代码4.1 查询单条个人习惯4.2 查询我的室友4.3 查询宿舍4.4 查询指定性别全部宿舍4.5 初次分配宿舍 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的…

java8的 lambda表达式到stream API总结备忘

文章目录 1. Lambda 表达式为什么使用 Lambda 表达式从匿名类到 Lambda 的转换Lambda 表达式语法语法格式一&#xff1a;无参&#xff0c;无返回值&#xff0c;Lambda 体只需一条语句语法格式二&#xff1a;Lambda 需要一个参数语法格式三&#xff1a;Lambda 只需要一个参数时&…

如何在iStoreOS软路由系统中安装cpolar实现公网远程本地电脑桌面

文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是&#xff1a;** 简介 软路由是PC的硬件加上路由系统来实现路由器的功能&#xff0c;也可以说是使用软件达成路由功能的路由器。 使用软路由控制局域网内计算机的好处&#xff1a…

微信商户平台:如何查看超级管理员

如果有普通员工身份&#xff0c;可以登录 https://pay.weixin.qq.com/index.php/core/account/info 扫码进入后&#xff0c;进入菜单&#xff1a;账户中心》商户信息&#xff0c; 即可看到超级管理员的信息。

感觉我国的程序员前景一片灰暗,是这样吗?

程序员也分为好几等&#xff0c;在现在看来大部分的Android、Java、前端等等开发。已经看不到希望了&#xff0c;很多人都在边缘挣扎&#xff1b;刚看到一位Android开发者&#xff0c;过完年回公司就通知被裁&#xff1b;可见每年都会有很多互联网公司倒闭&#xff0c;或者裁员…

海鹰数据:Shopee卖家的利器,助力选品决策

在如今激烈竞争的电商市场中&#xff0c;Shopee作为一家备受欢迎的在线购物平台&#xff0c;吸引了大量卖家加入平台进行销售。然而&#xff0c;要在这个竞争激烈的市场中脱颖而出&#xff0c;并非易事。因此&#xff0c;对于Shopee卖家来说&#xff0c;如何科学合理地进行选品…