Android 可视化性能监控和辅助小工具合集

Android 可视化性能监控和辅助小工具合集MagicBox 是一款 Android 平台的小工具合集 性能检测 接口请求控制和拦截等功能集合 建议在 Debug 和测试阶段使用 功能清单 小工具 提供各种小工具辅助开发测试 并支持外部扩展 功能 描述 APP 信息 打开展示 APP 详细信息 支持外部扩展 设备信息 打开展示设备详细信息 仪表盘 打开或关闭系统弹窗 用于实时展示性能和网络数据 Crash 信息

大家好,我是讯享网,很高兴认识大家。

MagicBox是一款Android平台的小工具合集, 性能检测, 接口请求控制和拦截等功能集合. 建议在Debug和测试阶段使用.

功能清单

  • 小工具: 提供各种小工具辅助开发测试, 并支持外部扩展.
    功能 描述
    APP信息 打开展示APP详细信息, 支持外部扩展
    设备信息 打开展示设备详细信息
    仪表盘 打开或关闭系统弹窗, 用于实时展示性能和网络数据
    Crash信息 直接在APP内查看Crash信息, 也支持导出到SD卡
    沙盒查看 查看APP沙盒空间, 支持文本预览和导出到SD卡
    支持外部动态扩展
  • 性能监控: 提供开关性能相关数据的监控, 实时性能数据可以展示在仪表盘上或直接回调.
    功能 描述
    CPU 开关监控APP的实时CPU使用率
    内存 开关监控APP的实时内存使用量
    帧率 开关监控APP的实时渲染帧率
  • 网络辅助(支持3.x okhttp): 支持开关模拟各种网络情况和拦截请求日志.
    功能 描述
    弱网模拟 接口请求的速度默认限制在1kb/s, 可以外部配置
    超时模拟 接口请求默认等待5s后, 返回400. 超时时间可配置
    404模拟 接口直接返回404
    拦截日志 拦截请求, 汇总基本属性和耗时等信息
  • TODO
    TODO 描述
    组件加载耗时监控 插桩监控页面, 服务等组件的加载耗时

额外开销

额外开销 描述
线程1个 开启性能监控后, 启动线程处理数据
线程1个 预览沙盒文件时IO文件
网络拦截器2个 开启网络功能后, 用来模拟和拦截接口请求
系统弹窗权限 需要申请系统弹窗权限, 来进行数据可视化
存储权限 导出沙盒或Crash文件到SD卡时申请
包体积 增大40k左右

Gradle接入

根项目build.gradle中引入mavenCentral.

allprojects { repositories { ... mavenCentral() } } 

讯享网

Modulebuild.gradle中接入Magic-Box.

讯享网dependencies { compile 'com.github.hijesse:magic-box:1.0.0' } 

如何使用

  • 初始化
    1. 初始化Magic-Box. 建议在Application中初始化MagicBox. SDK的初始化并没有做任何耗时操作, 只是全局缓存一下应用的context并标记是否要打印内部log.
      MagicBox.init(getApplication(), true); 
    2. 初始化网络拦截器

      SDK提供两种方式添加拦截器并开启网络相关总开关:

      使用SDK传入OKHttpClient自动添加拦截器并打开总开关.

      讯享网// 分别添加网络模拟拦截器和请求日志拦截器 okHttpClient = MagicBox.getNetworkInfoManager().setSimulationEnable(true, okHttpClient); okHttpClient = MagicBox.getNetworkInfoManager().setRequestLoggerEnable(true, okHttpClient); 

      或者使用OKHttp的builder手动添加网络拦截器.

      // 分别添加网络模拟和请求日志拦截器 builder.addNetworkInterceptor(new SimulateNetworkInterceptor()) builder.addInterceptor(new RequestLoggerInterceptor()) 
    3. 扩展APP信息展示
      讯享网List<MagicBoxDeviceAppInfoData> appData = new ArrayList<>(); appData.add(new MagicBoxDeviceAppInfoData("渠道", "demo")); // 设置app信息的扩展数据 MagicBox.setAppInfoExternalData(appData); 
  • 启动魔盒主页
    1. 启动默认魔盒主页


      讯享网

      在这里插入图片描述

      / * 启动默认魔盒主页 * * @param context context * @param title 标题 */ MagicBoxActivity.start(context, title) 
    2. 启动支持扩展小工具的魔盒主页, 并回调扩展小工具的点击事件.

      在这里插入图片描述

      讯享网/ * 启动魔盒主页, 支持小工具扩展, 并监听回调 * <p> * 回调以{@link #BASE_RESULT_CODE} 为基数 * 加上tools数组下标为result code, 进行回调 * * @param context context * @param title 标题 * @param requestCode 请求code * @param tools 扩展小工具 */ MagicBoxActivity.startActivityWithResult(activity, title, REQUEST_MAGIC_BOX, new String[]{"扩展1", "扩展2"}); 

      以扩展的方式启动魔盒主页后, 在启动父级页面的onActivityResult里处理扩展的点击回调.

      在这里插入图片描述

      if (requestCode != REQUEST_MAGIC_BOX) { return; } // 以BASE_RESULT_CODE 基数 + 扩展下标 if (resultCode == MagicBoxActivity.BASE_RESULT_CODE) { toast("扩展1"); } else if (resultCode == MagicBoxActivity.BASE_RESULT_CODE + 1) { toast("扩展2"); } 
  • 独立开关
    1. 开关性能监控, 并监听性能数据回调. 将在仪表盘上展示的数据直接回调本地.

      在这里插入图片描述

      讯享网// 开启性能监控 MagicBox.getPerformanceManager().startMonitorCPU(); MagicBox.getPerformanceManager().startMonitorMem(); MagicBox.getPerformanceManager().startMonitorFPS(); 
      // 关闭性能监控 MagicBox.getPerformanceManager().stopMonitorCPU(); MagicBox.getPerformanceManager().stopMonitorMem(); MagicBox.getPerformanceManager().stopMonitorFPS(); 
      讯享网// 注册性能数据回调 MagicBox.registerDashboardData(listener); // 非使用场景一定要注销, 避免内存泄露 MagicBox.unregisterDashboardData(listener); / * Magic Box所有数据监听. UI 线程回调. */ public interface OnDashboardDataListener { / * 性能相关数据回调 * * @param performanceData 性能 */ void onPerformance(PerformanceData performanceData); / * 网络请求拦截日志回调 * * @param loggerData 拦截日志 */ void onHttpRequestLog(RequestLoggerData loggerData); } 
    2. 开启Crash拦截, 建议在Application中初始化MagicBox后进行设置.
      // java crash拦截 MagicBox.getJavaUncaughtCrashManager().enable(getApplication()); 

      开启Crash拦截, 在APP中发生Crash后SDK会将Crash信息保存至沙盒缓存文件中. 可以使用小工具直接文本查看或导出到SD卡.

      在这里插入图片描述

      在这里插入图片描述

    3. 开关网络模拟
      讯享网// 开启网络模拟总开关 MagicBox.getNetworkInfoManager().setSimulationEnable(true) // 设置模拟网络超时, 并设置超时时间为10s MagicBox.getNetworkInfoManager().setSimulationType(NetworkInfoManager.SIMULATION_TYPE_TIMEOUT); MagicBox.getNetworkInfoManager().setSimulationTimeout(10000); // 模拟404 MagicBox.getNetworkInfoManager().setSimulationType(NetworkInfoManager.SIMULATION_TYPE_BLOCK); // 设置模拟限速, 并设置限速为10k/s MagicBox.getNetworkInfoManager().setSimulationType(NetworkInfoManager.SIMULATION_TYPE_SPEED_LIMIT); MagicBox.getNetworkInfoManager().setSimulationRequestSpeed(10); 
    4. 开关网络拦截
      // 开启网络拦截总开关 MagicBox.getNetworkInfoManager().setRequestLoggerEnable(true); // 设置网络拦截域名白名单 MagicBox.getNetworkInfoManager().setRequestLoggerHostWhiteList(new String[]{"www.github.com"}); 

源码仓库

https://github.com/HiJesse/Magic-Box


转载请注明出处:https://blog.csdn.net/l2show/article/details/

小讯
上一篇 2025-03-31 15:57
下一篇 2025-03-17 15:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/65639.html