开源 _ 新一代Android 性能监控框架Rabbit

最终扫描结果会展示如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击右上角导出按钮可以把扫描结果以json的形式导出到SD卡中。

网络日志监控

rabbit可以记录网络请求日志并方便的查看返回的json数据:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

卡顿日志监控

rabbit通过Choreographer来检测主线程的运行情况,并异步采集主线程堆栈来还原卡顿现场。

对于下面代码:

Thread.sleep(2000)

rabbit会获得如下的卡顿采集结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FPS分析

rabbit会在主线程looper运行时计算主线程FPS并实时的显示出来:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

rabbit支持分页面分析FPS:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

内存分析

功能类似于FPS分析,rabbit支持实时显示内存使用情况并分页面分析内存占用情况:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分页面内存统计:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

异常捕获

通过设置Thread.setDefaultUncaughtExceptionHandler,rabbit可以捕获java层异常并展示出来:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

内存泄漏捕获

rabbit集成了leakcanary 2.0

apk包分析

rabbit提供了一个可执行的jar包, 它可以准确的分析出apk中的大图、重复文件、apk包大小与内容组成。核心思路参考自Matrix APK包分析。

运行方式为:

java -jar apk-analyzer.jar apk-analyzer-config.json

apk-analyzer-config.json用来配置待分析的apk路径以及mapping文件位置等信息:

{
“apkPath”:“xxxx/app-Release.apk”,
“methodGroup”:[{
“name”:“xxx”,
“package”:“com.xxx.xx”
}],
“classMappingFilePath”:“xxx/xxx.txt”,
“maxImageSizeKB”:30
}

最终分析结果会输出到一个json文件中:

apk-analyzer-result.json

{
“AppInfo”: {
“versionCode”: “1004000”,
“versionName”: “1.4.0”,
“appSize”: “21.51 MB”
},
“BigImageRes”: [
{
“name”: “assets/flutter_assets/images/icons/xxLogo.png”,
“size”: “76.73 KB”
}


],
“ApkCompose”: [
{
“type”: “so”,
“totalSizeStr”: “8.05 MB”
},
{
“type”: “dex”,
“totalSizeStr”: “6.54 MB”
}


],
“DuplicatedFile”: [
{
“files”: [
“res/drawable-xxhdpi-v4/bg_home_water_ripple.webp”,
“res/drawable-xxhdpi-v4/bg_keyboard_shadow_line.webp”
],
“fileSize”: “”,
“md5Value”: “d41d8cd98f00b204e9800998ecf8427e”
}

],
“MethodCount”: {
“total-count”: 127732,
“com.xxx.xx”: 14800,
“other-pkg”: 112932
}
}

上报APK分析结果

需要在apk-analyzer-config.json中配置上报路径:

{
“apkPath”:“xxxx/app-Release.apk”,

“uploadPath”:“xxxxxx/upload”
}

上报的数据格式与rabbit的基本上报数据格式保证一致:

数据上报

rabbit目前支持上报大部分检测数据。通过一些简单的配置就可以把检测数据上报到后台。rabbit数据上报的基本格式如下:

{
“device_info_str”: “{…}”,
“info_str”: “{…}”,
“time”: 1577775888933,
“type”: “fps_info”,
“use_time”: 19
}

  • type : 上报的数据类型
  • device_info_str : 设备信息, 格式json字符串
  • info_str: 该类型的数据的具体内容, 格式为json字符串
  • use_time: 应用当前使用时长

rabbit提供了上报回调,可以通过这个回调很方便的来实现自定义的上报逻辑:

rabbitConfig.reportConfig.dataReportListener = object :RabbitReportConfig.DataReportListener{
override fun onPrepareReportData(data: Any, currentUseTime: Long) {
//接入自己的上报逻辑
}
}

自定义面板

rabbit向外提供了UI扩展API,使用这些API可以很方便的把应用的“后门“放到rabbit中。

具体操作见 : 在rabbit中自定义页面

可用性与可配置性

rabbit的接入十分简单, 基本上就是一个init代码:

Rabbit.init(rabbitConfig)

相关支持配置见:RabbitConfig。

对于每一个功能,rabbit都提供了丰富的配置API和详细的使用文档。

在rabbit控制面板中你也可以很方便的控制这些功能:

监控开关设置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

快捷功能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看当前配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

noop包
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

总而言之,成功是留给准备好的人的。无论是参加什么面试,都要做好充足的准备,注意好面试的礼仪和穿着,向面试官表现出自己的热忱与真诚就好。即使最后没有过关,也要做好经验的总结,为下一次面试做好充足准备。

这里我为大家准备了一些我在面试后整理的面试专题资料,除了面试题,还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料分享给大家,希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

毕竟不管遇到什么样的面试官,去面试首先最主要的就是自己的实力,只要实力够硬,技术够强,就不怕面试拿不到offer!

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

5B-1712408628899)]

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

[外链图片转存中…(img-vUgDhABC-1712408628900)]

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt QML的插件(Qt Quick 2 Extension Plugin)方法

Qt Quick的插件方法 序言环境前置注意概念——Qt Quick插件的相关知识模块名的相关知识模块名本身注意事项模块名版本注意事项 以示例来说明创建插件qmltypes的生成qmltypes的可能性失效 插件的编码注意1、插件模块版本控制2、pro里的注意 调用插件插件信息输入 序言 网上有很…

PostgrerSQL基本使用与数据备份

前言 上篇了解了 PostgrerSQL 数据库的部署PostgreSQL关系型数据库介绍与部署-CSDN博客,本篇将继续就其基本操作、备份与还原内容做相关介绍。 目录 一、数据库的操作 1. 本机登录 2. 开启远程登录 2.1 开放远程端口 2.2 编辑配置文件 2.3 修改配置密码 2.…

【opencv】示例-aruco_dict_utils.cpp 计算 ArUco 字典度量

该程序可用于计算 ArUco 字典度量。 要计算考虑翻转标记的指标&#xff0c;请使用 -r 标志。 该程序可用于创建和编写自定义 ArUco 词典。 #include <opencv2/objdetect/aruco_detector.hpp> // 包含aruco marker检测相关功能的头文件 #include <iostream> // 包含…

漂亮国的无人餐厅的机器人骚操作

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;你的老朋友&#xff0c;老K。行业群 新书《智能物流系统构成与技术实践》 知名企业 读者福利&#xff1a; &#x1f449;抄底-仓储机器人-即买即用-免调试 智能制造-话题精读 1、西门子、ABB、汇川&#x…

个人小站回忆录

喜欢就点击上方关注我们吧&#xff01; 大家好呀&#xff01;这里是码农后端。对于我来说&#xff0c;今天是一个特别的日子&#xff0c;我的技术博客已经运行一年了&#xff0c;今天刚好是第365天&#xff0c;满打满算刚刚好一年哈哈&#xff0c;这不&#xff0c;写篇文章来纪…

华为汽车的“计算+通信”电子电气架构

文章目录 整车结构 硬件平台 软件平台 总结展望 整车EEA&#xff08;电子电气架构&#xff09;&#xff0c;按照博世提出的演进路径&#xff0c;大致可以划分为四个阶段&#xff1a;分布式模块阶段、区域控制阶段、中央计算阶段、云计算阶段。示例如下&#xff1a; 本文选取…

【.Net】DotNetty

文章目录 概述NIO和BIO、AIODotNetty适用场景DotNetty的整体架构和模块DotNetty的使用示例来源 概述 本系列文章主要讲述由微软Azure团队研发的.net的版本的netty&#xff0c;Dotnetty。所有的开发都将基于.net core 3.1版本进行开发。 Dotnetty是什么&#xff0c;原本Netty是…

openharmony launcher 调研笔记(02)UI 调用逻辑

最近在看launcher&#xff0c;把自己调研的点做个笔记&#xff0c;持续修改更新中&#xff0c;个人笔记酌情参考。 EntryView Column() { PageDesktopLayout(); } .height(this.workSpaceHeight) // this.mWorkSpaceHeight this.mScreenHe…

配置vscode链接linux

1.安装 remote SSH 2.按F1 ssh ljh服务器公网ip 3. 选择保存远端host到本地 某位置 等待片刻后 4. 切换到远程资源管理器中 应该可以看到一台电脑&#xff0c;右键在当前窗口链接&#xff0c;输入你的服务器用户密码后电脑变绿说明远程连接成功 5.一定要登陆上云服务器后再…

如何在没有备份的情况下从 iPad 恢复照片?

有很多操作都可能导致iPad照片丢失&#xff0c;包括误删除、出厂设置、iPad的iOS更新等。如果没有备份&#xff0c;似乎没有办法找回它们。然而&#xff0c;即使您将备份保留在 iCloud 或iTunes上&#xff0c;这些方式也需要您的 iPad 首先重置&#xff0c;从而用备份内容覆盖当…

Vue中如何使用Tailwind CSS样式?多次引用不成功?具体步骤怎么做?

一、安装Tailwind CSS和依赖 在你的Vue项目中安装Tailwind CSS及其依赖。你可以使用npm或yarn来安装。 npm install tailwindcsslatest postcsslatest autoprefixerlatest # 或者yarn add tailwindcsslatest postcsslatest autoprefixerlatest 二、初始化Tailwind CSS np…

【51单片机入门记录】RTC(实时时钟)-DS1302应用

目录 一、DS1302相关写函数 &#xff08;1&#xff09;Write&#xff3f;Ds1302 &#xff08;2&#xff09;Write&#xff3f;Ds1302&#xff3f;Byte 二、DS130相关数据操作流程及相关代码 &#xff08;1&#xff09;DS1302初始化数据操作流程及相关代码 (shijian[i]/10&…