ADB 命令结合 monkey 的简单使用,超详细

news2024/9/27 17:30:53

一:ADB简介

1,什么是adb:
ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。ADB 也是 Android SDK 中的一个工具,可以直接操作管理 Android 模拟器或者真实的 Android 设备。
2,为什么要用adb:
🔹运行设备的 shell(命令行)
🔹管理模拟器或设备的端口映射
🔹计算机和设备之间上传/下载文件
🔹可以对设备的应用进行卸载安装等
🔹在 App 遇到 ANR/Crash 等 bug 时,可以通过 ADB 来抓取日志
简而言之,ADB 就是连接 Android 手机与 PC 端的桥梁,所以ADB又称为安卓调试桥(注意:是安卓,不是iOS),可以让用户在电脑上对手机进行全面的操作!
 

二:准备条件

1,下载安装ADB
链接:
https://pan.baidu.com/s/18pIS1QtvqR3td34pMsCJ2Q
提取码:2e34

2,配置环境变量
解压安装后,把解压路径放到系统变量里去(Path),
环境变量如何配置,比如我的配置如下图:

图片

 

3,连接
可以通过模拟器连接,也可以通过数据线连接。通过数据线连接时,手机进入“开发者选项”,打开“usb调试”。
不同品牌安卓机型,首次打开“开发者选项”方式不一样,大多是双击手机版本号3~5次,会toast提醒“开发者模式已打开”,具体打开方式可根据手机品牌进行百度查询。
4,电脑打开cmd窗口
 

图片

 

三:ADB命令详解

1,基本命令
adb version :显示 adb 版本

图片

 adb help:帮助信息,查看adb所支持的所有命令

图片

 adb devices:查看当前连接的设备,已连接的设备会显示出来

图片

 adb get-serialno:也可以查看设备号

图片

 2,权限命令
adb root:获取Android管理员(root用户)的权限。
注意:一般测试机可使用root权限。
Android版本9以上,不支持商用机使用root权限,但可以修改底层一些配置:https://www.cnblogs.com/jeason1997/p/12410537.html
图片

 adb shell:登录设备 shell,该命令将登录设备的shell(内核),登录shell后,可以使用 cd,ls,rm 等Linux命令

图片

adb remount:获取System分区可写权限,需要root后才能有这个权限
3,建立连接
adb -d:如果同时连了usb,又开了模拟器,连接当前唯一通过usb连接的安卓设备
adb -e shell:指定当前连接此电脑的唯一的一个模拟器
adb -s <设备号> shell:当电脑插多台手机或模拟器时,指定一个设备号进行连接
图片

 exit:退出

图片

 adb kill-server:杀死当前adb服务,如果连不上设备时,杀掉重启。(没事不要用它)

图片

 adb start-server:杀掉后重启,

图片

 5037:adb默认端口,如果该端口被占用,可以指定一个端口号,如下命令↓
adb -p 6666 start-server:任意指定一个 adb shell 的端口

图片

 4,apk 操作指令
adb shell pm list packages:列出当前设备/手机,所有的包名

图片

 adb shell pm list packages -f:显示包和包相关联的文件(安装路径)

图片

 adb shell pm list packages -d:显示禁用的包名
adb shell pm list packages -e:显示当前启用的包名
adb shell pm list packages -s:显示系统应用包名
adb shell pm list packages -3:显示已安装第三方的包名
adb shell pm list packages xxxx:加需要过滤的包名,如:xxx = taobao
adb install <文件路径\apk>:将本地的apk软件安装到设备(手机)上。如手机外部安装需要密码,记得手机输入密码。

图片

 adb install -r <文件路径\apk>:覆盖安装

图片

 adb install -d <文件路径\apk>:允许降级覆盖安装
adb install -g <文件路径\apk>:授权/获取权限,安装软件时把所有权限都打开
adb uninstall <包名>:卸载该软件/app。
注意:安装时安装的是apk,卸载时是包名,可以通过 adb shell pm list packages 查看需要卸载的包名。
图片

 adb shell pm uninstall -k <包名>:虽然把此应用卸载,但仍保存此应用的数据和缓存
adb shell am force-stop <包名>:强制退出该应用/app

 图片

5,文件操作指令
adb push <本地路径\文件或文件夹> <手机端路径>:把本地(pc机)的文件或文件夹复制到设备(手机) 

图片

 注意点1:pc机路径与Android机路径,分隔符是不同的。
注意点2:复制失败,大概率是无权限。可先使用上面介绍过的两个命令:adb root;adb remount。在使用 adb push 命令
adb pull <手机端路径/文件或文件夹> <pc机路径>:把设备(手机)的文件或文件夹复制到本地。注意点同上
图片

 6,日志操作指令
adb shell logcat -c:清理现有日志
adb shell logcat -v time :输出日志,信息输出在控制台
adb shell logcat -v time > <存放路径\log.txt>:输出日志并保存在本地文件
Ctrl+C:终止日志抓取
adb shell logcat -v time *:E > <存放路径\log.txt>:打印级别为Error的信息
日志的等级:
-v:Verbse(明细)
-d:Debug(调试)
-i:Info(信息)
-w:Warn(警告)
-e:Error(错误)
-f:Fatal(严重错误)
抓取日志的步骤先输入命令启动日志,然后操作 App,复现 bug,再 ctrl+c 停止日志,分析本地保存的文件。
:日志是记录手机系统在运行app时有什么异常的事件
EXCEPTION
也可以把更详细得Anr日志拉取出来:adb shell pull /data/anr/traces.txt <存放路径>
7,系统操作指令
adb shell getprop ro.product.model:获取设备型号
图片

 adb shell getprop ro.build.version.release:获取Android系统版本

图片

 adb get-serialno:获取设备的序列号(设备号)

图片

 adb shell wm size:获取设备屏幕分辨率

图片

 adb shell screencap -p /sdcard/mms.png:屏幕截图
adb shell screencap -p /sdcard/screenshot.png:屏幕截图

图片

 图片

adb pull /sdcard/mms.png <存放的路径>:将截图导出到本地
adb pull /sdcard/screenshot.png <存放的路径>:将截图导出到本地 

在这里插入图片描述

图片 

 adb shell dumpsys activity |find “mResumedActivity”:查看前台应用包名,必须先启动app,适用于Android 8.0以上

图片

 adb shell cat /proc/meminfo:获取手机内存信息

图片

 adb shell df:获取手机存储信息

图片

 

adb shell screenrecord <存放路径/xxx.mp4>:录屏,命名以.mp4结尾
adb shell screenrecord --time-limit 10 <存放路径/xxx.mp4>:录屏时间为10秒

四,ADB 命令结合 monkey 的使用

1,什么是monkey
Monkey 是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试。主要是为了测试app是否存在无响应和崩溃的情况。
2,adb结合 monkey 的常用命令
adb shell monkey 100:对该设备下,随机应用,执行100次的随机操作。(伪随机)
图片

 adb shell monkey -p <包名> 100:指定应用(包)随机操作100次。这里演示的包名为:com.dfcyc.app.dffs

图片

 adb shell monkey -p <包名> -v -v -v 100 >D:\log.txt:指定应用随机操作100次并打印日志到指定路径/文件
-v:日志等级,一共3级
D:\log.txt:指定路径存放日志,文件名自定义。

图片

adb shell monkey -s <seed值> -p <包名> -v -v -v 100 >D:\log.txt:根据seed值 指定应用随机操作100次并打印日志到指定路径/文件
seed值:输出log日志文件后,文件内查看。
 图片

 adb shell monkey -p <包名> -v -v -v --throttle 1000 200 >D:\log.txt:指定应用随机操作200次,每1000毫秒点击一次,并打印日志到指定路径/文件。
–throttle:后面跟毫秒数

图片

 在命令执行过程中,按 Ctrl+C 可以退出,但不代表monkey停止 (包括运行monkey时拔掉数据线,仍然未停止),如果需要停止monkey可以杀死该进程 id,如下命令:
adb shell ps | findstr monkey:停止前先查看当前系统,monkey在跑的 进程id
图片

 adb shell kill <进程pid>:强制杀死在跑的monkey进程

 图片

 

3,monkey的日志分析
使用 Monkey 进行测试结束后,我们关注的是应用在测试中是否出现崩溃或无响应这类问题。测试结果可以通过如下方法判断:
正常:
monkey测试顺利执行完成,在log的最后,会打印当前执行时间的次数和所花费的时间。Monkey finished代表执行完成
异常:日志内搜索异常关键字
a. 无响应-Anr问题:在日志中搜索“ANR”
b. :在日志中搜索“CRASH”
c. 其他问题:在日志中搜索”Exception”
更多日志相关信息可自行百度
有实力的同学可以写个小工具,自动进行日志分析即可。
知识点:adb logcat的日志和monkey命令日志的区别
adb monkey日志是记录monkey命令在手机APP操作的事件。
adb logcat日志是记录手机系统在运行app时有什么异常的事件。

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

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

相关文章

openssl CVE-2016-2107 漏洞检测---OpenSSL Padding Oracle 攻击

openssl CVE-2016-2107 漏洞检测—OpenSSL Padding Oracle 攻击 文章目录 CVE-2016-2107.exe执行1执行2 OpenSSL Padding Oracle 攻击漏洞描述检测方法修复 CVE-2016-2107.exe 执行1 下载CVE-2016-2107.exe https://github.com/FiloSottile/CVE-2016-2107 https://github.com…

2023 7.3~7.9 周报 (论文初读)

上周回顾: (上周还没开始) 本周计划: 本周阅读论文《Deep-Learning Full-Waveform Inversion Using Seismic Migration Images》. 这篇论文是发表于2022的一篇较新的关于DL-FWI的论文, 作者在论文中提出了一些比较新颖的观点和质疑. 这篇论文主基调很符合近几年DL-FWI的味道…

对 MinIO API 进行封装并上传到第三方库 Pyzjr

目录 本文介绍 上一节补充 使用官方的游乐场进行测试和开发 熟悉MinIO的API 创建客户端 操作桶 1、检查桶是否存在&#xff0c;如果不存在就创建一个桶 2、列出所有的存储桶名 3、删除储存桶 4、用于查看存储桶的对象 操作对象 1、删除对象 2、删除zip文件 3、下…

C#基础学习_构造方法

C#基础学习_构造方法 在构造方法中添加初始化内容; 通过使用构造方法,可以简化对象初始化代码。 无参数的构造方法: public Student(){StudentID = 12345;StudentName = "djichsdi";}带参数的构造方法(构造方法同样可以重载&

Python——基础语法

输出语句 #字符串拼接 print("hello word""北岭山脚鼠鼠") #字符转义 print("He said \"Let\s go!\"") #换行 print("hello!\nHi!") #三引号 print(""""北岭山脚鼠鼠 北岭山脚鼠鼠 北岭山脚鼠鼠 北岭山…

ESP32(掌控板) 陀螺仪显示与RGB灯

ESP32&#xff08;掌控板&#xff09; 陀螺仪显示与RGB灯 本程序图形化显示陀螺仪位置&#xff08;注意要换算&#xff09;&#xff0c;根据陀螺仪位置控制RGB灯颜色并有3种颜色组合和关灯可选&#xff0c;通过触摸按键调节亮度。 图形化程序如下 Arduino代码如下 /*!* MindP…

字符集,编码方式和Java程序乱码问题

目录 1&#xff0c;字符编码 2&#xff0c;三大字符集及编码方式 2.1&#xff0c;ASCII字符集及编码方式 2.2&#xff0c;GBK字符集及编码方式 2.3&#xff0c;Unicode字符集及编码方式 3.程序乱码问题 1&#xff0c;字符编码 数字计算机中的存储器唯一可以存储的是比特&a…

绿虫生产效率提升工具怎么安装配置?

一、添加员工 打开绿虫生产效率提升工具后台&#xff0c;输入账号密码登录&#xff0c;登录成功之后&#xff0c;需要先进行员工添加&#xff0c;点击员工管理&#xff0c;导入员工信息&#xff0c;也可使用企微同步。 二、绑定员工 点击终端部署&#xff0c;复制网址或下载安…

多模态系列论文----最详细的多模态论文总结(BLIP、BEIT、CoCa等)

1 多模态概述 多模态指的是多种模态的信息数据&#xff0c;包括&#xff1a;文本、图像、视频、音频等。多模态任务是指需要同时处理两种或多种不同类型的数据的任务。近年来&#xff0c;随着深度学习技术的发展&#xff0c;多模态任务取得了显著的进步。特别是VIT&#xff08…

【WebSocket】SpringBoot整合WebSocket实现聊天室(一)

目录 一、准备 1、引入依赖 2、创建配置类 二、相关注解 一、准备 1、引入依赖 首先我们需要在项目中引入依赖&#xff0c;有两种方式。第一种我们可以在创建Spring Boot项目时搜索WebSocket然后勾选依赖 第二种是我们可以直接在项目的pom.xml文件中插入以下依赖 <dep…

基于TF-IDF+Tensorflow+PyQt+孪生神经网络的智能聊天机器人(深度学习)含全部Python工程源码及模型+训练数据集

目录 前言总体设计系统整体结构图系统流程图孪生神经网络结构图 运行环境Python 环境TensorFlow 环境 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 模型应用 系统测试1. 训练准确率2. 测试效果3. 模型生成 工程源代码下载其它资料下载 前言 本项目利用TF-IDF&…

[VUE学习】从头搭建权限管理系统前端-初始化

1.安装Node 2.安装Vue Cli vue的一个脚手架 npm install -g vue/cli 3.vue ui搭建vue项目 cmd 运行 vue ui 然后创建新项目 选择npm 选择配置 Babel 是编译的 Router 是路由 vuex 是状态保存的 Linter/fomatter 代码检测和格式化 创建完成 这个时候 代码在我们本地…

Spring Boot 中的 Criteria 是什么,如何使用?

Spring Boot 中的 Criteria 是什么&#xff0c;如何使用&#xff1f; 介绍 Spring Boot 是一个流行的 Java Web 开发框架&#xff0c;它提供了一些强大的工具和库&#xff0c;使得开发 Web 应用程序变得更加容易。其中之一是 Criteria API&#xff0c;它提供了一种类型安全的…

电脑免费简单又好用的记事本app软件推荐

很多职场人士在办公时都需要用到电脑&#xff0c;在电脑上有很多好用的工具软件可以用来辅助工作的展开&#xff0c;其中记事本类的App就有不少优质软件存在。那电脑免费简单又好用的记事本app软件推荐哪些呢&#xff1f;这里小编就以自己的Windows10电脑为例&#xff0c;为大家…

山西电力市场日前价格预测【2023-07-09】

日前价格预测 预测明日&#xff08;2023-07-09&#xff09;山西电力市场全天平均日前电价为386.09元/MWh。其中&#xff0c;最高日前价格为505.65元/MWh&#xff0c;预计出现在21: 30。最低日前电价为286.38元/MWh&#xff0c;预计出现在13: 30。 以上预测仅供学习参考&#x…

ModaHub魔搭社区:向量数据库Zilliz Cloud向量搜索和查询教程(一)

目录 概述 开始前 单向量搜索 本文介绍如何在 Zilliz Cloud 中执行近似最近邻&#xff08;Approximate Nearest Neighbour&#xff0c;ANN&#xff09;搜索和查询。搜索是指在 Collection 中查找与指定查询向量最接近的向量&#xff0c;查询是基于指定条件筛选出满足条件的数…

一文看懂ChatGPT与存算一体化

ChatGPT开启大模型“军备赛”&#xff0c;存储作为计算机重要组成部分明显受益: ChatGPT开启算力军备赛&#xff0c;大模型参数呈现指数规模&#xff0c;引爆海量算力需求&#xff0c;模型计算量增长速度远超人工智能硬件算力增长速度&#xff0c;同时也对数据传输速度提出了…

mysql练习---对表进行插入、更新与删除

环境&#xff1a; 第一题 (1) 创建表 create table pet( name varchar(20) not null comment 宠物名称, owner varchar(20) comment 宠物主人, species varchar(20) not null comment 种类, sex char not null comment 性别, birth year not null comment 出生日期, death …

HTML转EXE工具(23.7.7.0)使用说明

目录 一、注册账号和不注册有什么区别&#xff1f; 二、如何注册账号&#xff1f; 三、如何自定义about框&#xff1f; 四、如何选择打包网站还是Web项目&#xff1f; 五、如何设置程序基本信息&#xff1f; 六、什么是程序启动最大化和无标题&#xff1f; 七、程序生成…

Android之内存泄漏与内存溢出

Android之内存泄漏与内存溢出 概览 内存泄漏&#xff08;memory leak&#xff09;&#xff1a;是指程序在申请内存后&#xff0c;无法释放已申请的内存空间&#xff0c;导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响…