iOS matrix


iOS matrix

matrix介绍

Matrix 是一款微信研发并日常使用的应用性能接入框架,支持iOS, macOS和Android。 Matrix 通过接入各种性能监控方案,对性能监控项的异常数据进行采集和分析,输出相应的问题分析、定位与优化建议,从而帮助开发者开发出更高质量的应用。

maxtrix github传送门

maxtrix 码云传送门

matrix内部实现

当前工具监控范围包括:崩溃、卡顿和爆内存,包含以下两款插件:

1.WCCrashBlockMonitorPlugin: 基于 KSCrash 框架开发,具有业界领先的卡顿堆栈捕获能力,同时兼备崩溃捕获能力。

2.WCMemoryStatPlugin: 一款性能优化到极致的爆内存监控工具,能够全面捕获应用爆内存时的内存分配以及调用堆栈情况。

特性

WCCrashBlockMonitorPlugin

1.接入简单,代码无侵入

2.通过检查 Runloop 运行状态判断应用是否卡顿,同时支持 iOS/macOS 平台

3.增加耗时堆栈提取,卡顿线程快照日志中附加最近时间最耗时的主线程堆栈

WCMemoryStatPlugin

1.在应用运行期间获取对象存活以及相应的堆栈信息,在检测到应用爆内存时进行上报

2.使用平衡二叉树存储存活对象,使用 Hash Table 存储堆栈,将性能优化到极致

matrix安装

1.通过 Cocoapods 安装

  • 先安装 CocoaPods;
  • 通过 pod repo update 更新 matrix 的 Cocoapods 版本;
  • 在 Podfile 对应的 target 中,添加 pod 'matrix-wechat',并执行 pod install;
  • 在项目中使用 Cocoapods 生成的 .xcworkspace运行工程;
  • 在你的代码文件头引入头文件 #import <Matrix/Matrix.h>,就可以接入微信的性能探针工具了!

2.通过静态库安装

  • 获取 Matrix 源码;

  • 打开命令行,在 matrix/matrix-iOS 代码目录下执行 make 进行编译生成静态库;

    编译完成后,iOS 平台的库在 matrix/matrix-iOS/build_ios 目录下,macOS 平台的库在 matrix/matrix-iOS/build_macos 目录下;

    ⚠️ 在make时如果遇到错误:

	xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
	```
 
	请用终端工具输入以下内容然后继续即可

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/


- 工程引入静态库:

	iOS 平台:使用 matrix/matrix-iOS/build_ios 路径下的 Matrix.framework,将 Matrix.framework 以静态库的方式引入工程;
	
	macOS 平台:使用 matrix/matrix-iOS/build_macos 路径下的 Matrix.framework,将 Matrix.framework 以静态库的方式引入工程。
	
- 添加头文件 #import <Matrix/Matrix.h>,就可以接入微信的性能探针工具了!
 ⚠️ 如果导入成功后编译发现报了很多std错误 将项目文件.m 改为.mm 即可。(注:.m是object c语言文件   .mm是object c++语言文件)

## matrix使用
- 1.matrix初始化

Matrix *matrix = [Matrix sharedInstance];
MatrixBuilder *curBuilder = [[MatrixBuilder alloc] init];
curBuilder.pluginListener = self; // pluginListener 回调 plugin 的相关事件

WCCrashBlockMonitorPlugin *crashBlockPlugin = [[WCCrashBlockMonitorPlugin alloc] init];
[curBuilder addPlugin:crashBlockPlugin]; // 添加卡顿和崩溃监控

WCMemoryStatPlugin *memoryStatPlugin = [[WCMemoryStatPlugin alloc] init];
[curBuilder addPlugin:memoryStatPlugin]; // 添加内存监控功能

[matrix addMatrixBuilder:curBuilder];

// [crashBlockPlugin start]; // 开启卡顿和崩溃监控
[memoryStatPlugin start];
// 开启内存监控,注意 memoryStatPlugin 开启之后对性能损耗较大,建议按需开启


- 2.遵循MatrixPluginListenerDelegate

  • (void)onInit:(id )plugin{

}

  • (void)onStart:(id )plugin{

}

  • (void)onStop:(id )plugin{

}

  • (void)onDestroy:(id )plugin{

}

/**

  • @brief The issue that has been triggered to report
  • The listener has to help to report the issue to the right place
  • @param issue The issue which be triggered to be reported
    */

-(void)onReportIssue:(MatrixIssue *)issue{

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM