一篇文章学懂ADB命令和Monkey命令

2023-10-27

一篇文章学懂ADB命令和Monkey命令

1.adb命令

1.1 查看连接设备

adb devices

在这里插入图片描述

1.2 查看adb版本

adb version

1.3 查看手机当前启动App的应用名和包名

adb shell dumpsys window w |findstr \/ |findstr name=

在这里插入图片描述

1.4 使用aapt使用aapt 查看app的包名和启动名 查看app的包名和启动名

aapt即Android Asset Packing Tool ,在android SDK 的build-tools 目录下。这个工具可以查看apk的包名启动名
我的appt在 D:\AndroidSDK\android-sdk-windows\build-tools\25.0.3这个路径下面
把这个路径添加到path环境变量,这样就可以直接在cmd中使用appt了

aapt dump badging D:\test\xxx.apk(APK的全名)

在这里插入图片描述

1.5 查看所有系统应用

adb shell pm list packages –s #

在这里插入图片描述

1.6 查看所有第三方应用

adb shell pm list packages -3

在这里插入图片描述

1.7 列出手机装的所有app的包名

adb shell pm list packages

在这里插入图片描述

1.8 安装软件

adb install 软件名

在这里插入图片描述

1.9 卸载软件

adb uninstall 软件包名

在这里插入图片描述

1.10 将电脑文件传输到移动端,将移动端文件传输到电脑

adb push 电脑路径 移动端路径
adb pull 移动端路径 电脑路径
在这里插入图片描述
在这里插入图片描述

1.11 截取当前屏幕信息

adb shell screencap -p 截图文件路径

在这里插入图片描述

1.12 查看手机CPU情况

adb shell dumpsys cpuinfo

在这里插入图片描述

1.13 查看应用内存使用情况

adb shell dumpsys meminfo + 包名

在这里插入图片描述

1.14 显示磁盘使用信息

adb shell dumpsys diskstats

在这里插入图片描述

1.15 清除应用缓存信息

adb shell pm clear [包名]

在这里插入图片描述

1.16 查看电池状态和查看电池信息

adb shell dumpsys battery

adb shell dumpsys batteryproperties
在这里插入图片描述

1.17 导出log文件到本地

adb logcat >D:\logs\1.txt
在这里插入图片描述
adb logcat -v time >D:\logs\1.txt

使用adb logcat -v time 命令, 可以啥看日志的输出时间

adb logcat *:W # 将Warning日志输出

adb logcat *:E # 将Error日志输出

2. monkey命令

2.1 随机对手机进行操作,包括点击,拖动,滑动,输入等操作,并打印日志

adb shell monkey -p 要测试的包 -v -v -v 要操作的次数

在这里插入图片描述

  • 日志解读

在这里插入图片描述
在这里插入图片描述

2.2 随机种子数

adb shell monkey -p 要测试的包 -v -v -v -s 种子数 要操作的次数

随机种子数:其中-s表示随机种子数,用于控制我们操作的顺序,种子数一样,表示所有的操作顺序一样

  • 没有-s参数时,系统随机生成的种子数,每次的操作顺序不一样

    • 第一次运行在这里插入图片描述在这里插入图片描述
    • 第二次运行
      在这里插入图片描述
      在这里插入图片描述
  • 添加种子数后运行

    • 第一次运行
      在这里插入图片描述
      在这里插入图片描述
  • 第二次运行
    在这里插入图片描述
    在这里插入图片描述

2.3 解析日志

第一部分:基本信息,要操作的次数和哪个app
在这里插入图片描述
第二部分:操作事件的比率
在这里插入图片描述
第三部分:详细的操作日志
在这里插入图片描述

第四部分:总共运行了多久
在这里插入图片描述

2.4 事件调整

  • 常用随机事件

请添加图片描述

请添加图片描述
在这里插入图片描述
app做健壮性测试,200次,然后要求点击事件必须要达到80%
在这里插入图片描述
在这里插入图片描述
对app,要求点击事件50%,滑动事件50%,操作20次。

在这里插入图片描述
在这里插入图片描述

2.5 等待时间的参数 --throttle毫秒

adb shell monkey –p 包 –v –v –v –throttle 1000 次数

解释:这个每个随机事件之间的间隔(排除无效的间隔时间)

设置每个事件的间隔为1s那么,里面要运行60次,我们可以运行240次(排除一些无效的时间)*4倍

在这里插入图片描述
在这里插入图片描述

2.6 日志查看

运行app500次,然后把日志保存在d:\123\mlog.txt文件下,并分析有没有问题

在这里插入图片描述
常见的日志错误
在这里插入图片描述

adb基本命令总结

'''起始'''
adb kill-server			# 关闭服务	
adb start-server		# 开启服务
adb devices				# 查看连接的设备
adb version				# 查看adb版本
adb get-state			# 设备状态	
#device:设备连接正常;offline:连接设备出现异常,设备无响应;unknown:没有连接设备

'''安装apk'''
adb install apk路径	   # 覆盖安装软件(本地路径,不是手机路径)
adb install -r (APK路径)		 # 覆盖安装(-r 代表如果apk已安装,重新安装apk并保留数据和缓存文件。)
adb install -s (APK路径)		 # -s 安装在SD卡内,而不是设备内部存储
adb uninstall 包名		#卸载apk

'''启动apk'''
adb shell am start –n 启动应用程序的界面activity的名称	#启动应用程序
adb shell am force-stop 包名		#关闭应用程序

'''系统命令'''
adb shell						# 进入手机
exit;							# 退出手机
adb shell pm list packages –s	# 查看所有系统应用
adb shell pm list packages -3	# 查看所有第三方应用
adb shell pm list packages		# 列出手机装的所有app的包名
adb uninstall 软件名			  	# 卸载软件

adb push 电脑路径 移动端路径		# 将电脑文件传输到移动端
adb pull 移动端路径 电脑路径		# 将移动端文件传输到电脑

adb help								# 查看adb命令帮助信息
adb shell screencap -p 截图文件路径		# 截屏
adb shell dumpsys cpuinfo				# 查看手机CPU情况
adb shell dumpsys meminfo + 包名	   		# 查看应用内存使用情况
adb shell dumpsys diskstats				# 显示磁盘使用信息
adb shell pm clear [包名]				# 清除应用缓存信息
adb shell dumpsys battery 				# 查看电池状态
adb shell dumpsys batteryproperties		# 查看电池信息

'''日志'''
adb logcat >D:\logs\1.txt			# 导出log文件到本地
adb logcat -v time >D:\logs\1.txt	# 使用adb logcat -v time 命令, 可以啥看日志的输出时间
adb logcat -t 5        输出最近5行的数据

# 过滤指定等级日志:按某级别过滤日志则会将该级别及以上的日志输出。将 Warning、Error、Fatal 和 Silent 日志输出。
# V —— Verbose(最低,输出得最多)
# D —— Debug
# I —— Info
# W —— Warning
# E —— Error
# F —— Fatal
# S —— Silent(最高)

adb logcat *:W						# 将Warning日志输出
adb logcat *:E						# 将Error日志输出

Monkey测试命令

adb shell monkey 100			# 在app端执行monkey随机测试100次,
adb shell monkey -p 包名  100	# 指定app进行monkey随机测试100次(-p 包名)

'''日志'''
adb shell monkey -p 包名 -v 30 	# 显示日志详细程度,总共分3个级别逐个加 -v ,30是事件,做多少次。
adb shell monkey -p 包名 -v -v 30
adb shell monkey -p 包名 -v -v -v 30
adb shell monkey 100 >路径		# 将log信息写到文档中,路径是本地路径,不是手机路径

'''--throttle(延时毫秒)'''
adb shell monkey -p 包名 --throttle 300 100
# 表示执行100个伪随机用户事件流,事件间隔为300毫秒。注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。

'''--ignore-crashes(不忽略异常)'''
# 通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
adb shell monkey --ignore-crashes -v 30

'''--ignore-timeouts(ANR)'''
# 通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
adb shell monkey --ignore-timeouts –v 10

'''-pct-touch 占比率(设置触摸事件占比)'''
# 调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)
adb shell monkey --pct-touch 67 -v 10	# 表示执行10个伪随机用户事件流,并调整其中触摸事件的百分比为67%。

'''--pct-motion 占比率(设置手势事件占比)'''
# 调整手势事件motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)
# –pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结尾,中间至少有一次Move(ACTION_MOVE)。
adb shell monkey --pct-motion 67 -v 10	# 表示执行10个伪随机用户事件流,并调整其中动作事件的百分比为67%。

'''设置其他占比率命令'''
# 二指缩放百分比,即智能机上的放大缩小手势操作
1. --pct-pinchzoom//pinch 

# 轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)
2. --pct-trackball//trackball

# 屏幕旋转百分比,横屏竖屏
3. --pct-rotation//screen

# 基本导航事件。即来自于方向输入设备的上下左右操作。
4. --pct-nav//nav

# ”主要”导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)
5. --pct-majornav//major

# ”系统”按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)
6. --pct-syskeys//system(key)

# 启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部
7. --pct-appswitch//app


# 键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回
8. --pct-flip//keyboard

# 其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。(该事件可能包含其他上述事件。)
9. --pct-anyevent//anyevents
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一篇文章学懂ADB命令和Monkey命令 的相关文章

  • 如何在 Android 中保存相机的临时照片?

    在尝试从相机拍照并将其保存到应用程序的缓存文件夹中时 我没有得到任何可见的结果 应用程序不会崩溃 但在 LogCat 上 当我尝试将 ImageView src 字段设置为刚刚获取的文件的 URI 时 我收到此消息 09 17 14 03
  • Android Studio 3.0 Canary 9 - 无法解析包

    我在 Android Studio 3 0 Canary 9 中遇到几个错误 这些错误是 无法解析 android 软件包 下面列出了一些错误 我刚刚安装了 SDK 的所有额外软件包 但仍然收到 gradle 构建错误 Error 82 1
  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • Spring利用propertyConfigurer类 读取.property数据库配置文件

    1 Spring的框架中 org springframework beans factory config PropertyPlaceholderConfigurer类可以将 properties key value形式 文件中 一些动态设
  • 2023蓝桥杯Java研究生组赛题

    蓝桥杯Java研究生组 JavaA组看过来 这两个组别题目基本一样 第一次参加了Java研究生组 Java组应该没有C C 那么卷吧 前面几题感觉难度还行没有特别难 后面几个大题依旧是没法做 不知道多少分能拿省一 有参加过的大佬可以说一说吗
  • 手撕LeetCode困难题-------正则表达式匹配 Python实现

    昨天刚刚把Python正则表达式学完 今天必须立刻手撕一道相关LeetCode 这不 题目马上来了 题面 正则表达式匹配 给你一个字符串 s 和一个字符规律 p 请你来实现一个支持 和 的正则表达式匹配 匹配任意单个字符 匹配零个或多个前面
  • python爬虫之js逆向(一)

    python爬虫之js逆向 一 写在前面 现在各种反爬手段很多 虽然我在工作的时候并没有遇到过 我的工作就是爬虫 但是基本上都是爬外网 google 都是企业级爬虫 很少像这样写垂直爬虫 在平时的技术交流群中经常看到大神们说一些我没遇到过的
  • 使用git_blame定位修改代码历史

    使用git blame定位修改代码历史 git blame定义 git blame Show what revision and author last modified each line of a file 文档地址 https git
  • 网络安全工程师自学教程2023年最新版

    什么是黑客 你以为的黑客是这样的 黑客帝国 实际上 黑客可能是街边炒粉的大叔 穿着格子衫的路人甲 一位体重再增加就得买3人座的 小胖 著名黑客Richard Stallman 黑客是一类掌握超高计算机技术的人群 凭着掌握的知识 他们既可以从
  • UDP消息发送

    发送端 package com kuang lesson03 import java net DatagramPacket import java net DatagramSocket import java net InetAddress
  • CAS(compare and swa)中的ABA问题及解决

    CAS compare and swap CAS是 compare and swap 的缩写 字面意思是比较交换 CAS锁通常也是实现乐观锁的一种机制 首先会给它一个期望值 用期望值与老值做比较 如果相等就用新传入的值进行修改 但是CAS通
  • GF_CLR初始用 - 正式版

    参照 DeerGF Wolong框架使用教程 与tackor老哥的踩坑日记所编写 第二次尝试 总结第一次经验重新来 点击链接加入群聊 Gf Wolong热更集合 一 部署 HybridCLR Wolong 环境 首先安装Windows Bu
  • IDEA安装Vue插件后为什么创建.vue文件不显示vue图标

    我的IDEA安装Vue插件后 按道理来说 新建一个 vue文件 文件前面应该会有一个 V 一样的图标 然而事实并不是 百度了一圈 大部分人都是说这样的 试了一下 并没用 于是乎 我找到了正确答案来帮刚入门Vue的小白填坑 打开 File g
  • MySQL分区(Partition)功能试验

    目录 概述 分区表和未分区表试验过程 分区命令详解 概述 自5 1开始对分区 Partition 有支持 6 0应比较稳定 水平分区 根据列属性按行分 举个简单例子 一个包含十年发票记录的表可以被分区为十个不同的分区 每个分区包含的是其中一
  • 【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 LSTM神经网络算法 1 2 PSO算法 1 3 PSO LSTM负荷预测模型 2 运行结果 2
  • excel 中如何使用python操作

    在Excel中使用Python可以通过两种方式实现 使用Python插件 您可以使用一些Excel插件 如PyXLL xlwings等 这些插件可以将Python代码嵌入到Excel工作簿中 以便在Excel中运行Python代码 使用Py
  • 服务器带宽测试

    服务器带宽 简单地说 就是同一时间段能传输的数据总量 服务器带宽越小那么可容纳数据吞吐量越小 同一时间段可容纳的用户访问量也越少 单位时间内从服务器拉取的数据量就越小 服务器带宽越大 可容纳同一时间访问数据越大 单位时间内从服务器拉取的数据
  • 1.8 C++ string

    string基本概念 本质 string是C 风格的字符串 而string本质上是一个类 string和char 区别 char 是一个指针string是一个类 类内部封装了char 管理这个字符串 是一个char 型的容器 特点 stri
  • MATLAB人工神经网络ANN代码

    本文介绍基于MATLAB实现人工神经网络 ANN 回归的详细代码与操作 目录 1 分解代码 1 1 循环准备 1 2 神经网络构建 1 3 数据处理 1 4 模型训练参数配置 1 5 神经网络实现 1 6 精度衡量 1 7 保存模型 2 完
  • android_使用ViewPager和Fragment实现滑动导航

    ViewPage是android support v4 jar包提供的用于页面滑动的库 这里没有将整个实现过程记录 只是把知识点摘出来单独解释 可参照代码自己实现 1 在xml布局文件中添加android support v4 view V
  • Keil 5使用JLink直接调试正在运行的CPU

    原文链接 环境 目标CPU STM32F429 连接工具 JLink V9 连接方式 SWD 调试工具 Keil MDK 5 20 使用场景 目标板正在运行 但是出BUG了 需要调试 而当前又没有在线debug 于是就需要用调试器在不复位C
  • C++ Streams

    1 fstream File table data txt 的内容为 137 2 71828 42 3 14159 7897987 1 608 1337 01101010001 从上述文件中读取第一个整数和第二个小数 ifstream in
  • 一篇文章学懂ADB命令和Monkey命令

    一篇文章学懂ADB命令和Monkey命令 1 adb命令 1 1 查看连接设备 1 2 查看adb版本 1 3 查看手机当前启动App的应用名和包名 1 4 使用aapt使用aapt 查看app的包名和启动名 查看app的包名和启动名 1