最近看公司颤振项目的时候,发现想要分析数据非常的困难,不是数据缺失就是数据异常,作为一个成熟的企业来说这是非常危险的,缺少了数据就像船只在海上航行的时候没有了方向,将会变得无所适从,所以这周花了点时间去优化。
对于颤振这样的组件来说,我们需要关注的数据无非是两项:
-
<李>性能数据李>
<李>异常数据李>
这两项数据是我们监控整个颤振应用是否优秀的最基础也是最重要的指标。性能数据能够帮我们分析出颤振对比本地人,RN, Weex等框架是否有优势,而异常数据则是反应了项目的健康程度,很多时候在项目开发和测试的过程中问题没有暴露,而是在线上才会有问题,如果没有异常监控,应用就很难具备从错误中快速恢复的能力。
对于性能数据,我们可以拆分成以下两个点:
-
<李>渲染时长李>
<李>页面帧率李>
对于页面帧率,目前我还没有什么仔细思考过,这一块的内容我会放在之后的文章中介绍。
对于渲染时长,我们可以通过颤振给出的系统回调在监控页面第一帧的渲染时间.Android为以下方法:
getFlutterView ()。addFirstFrameListener(新FlutterView.FirstFrameListener () { @Override 公共空间> 小部件构建(BuildContext上下文){ 返回新MaterialApp ( navigatorObservers:(新MyNavigatorObserver ()), :新支架( 身体:新MyPage (), ), ); }
在MyNavigatorObserver中通过didPush方法去上报页面打开的埋点。
有了页面的打开数据之后,我们接下去需要统计的是异常的发生次数,而在颤振中异常可以大致分为三类:
-
<李>飞镖异常李>
<李>框架异常李>
<李>崩溃李>
对Dart异于常,我们可以通过全局的onError函数去捕获:
runZoned};祝辞(()异步{ runApp(新MyApp ()); },> ErrorWidget。builder=(FlutterErrorDetails FlutterErrorDetails) {//统计飞镖错误 返回ErrorWidget (flutterErrorDetails.exception);
甚至我们还可以在这里重写这个ErrorWidget,去展示我们自定义的错误页。
说完了飞镖异常,我们接着去处理框架异常。这个异常比较特殊,应该是Android独有的,因为在Android中我们需要加载动态库去完成颤振的初始化,所以这里我们可以捕获动态库的加载,如果有异常发生或者加载失败,则算作为框架层异常。
最后一个则是运行时的崩溃,对于这部分异常,我们需要做的就是进行堆栈的捕获,并且判断是否是颤振引起的崩溃,如果是则上报埋点。
通过上面的几个数据统计,我们可以计算出颤振应用的以下几个数据:
-
<李>页面渲染时间李>
<李>页面帧率李>
<李>页面打开次数李>
<李>页面异常率李>
<李>页面崩溃率李>
有了以上的几个数据,我们就可以根据它们来进行业务上的优化,做到百尺竿头更进一步。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。