Flutter异常信息收集-Fabric Crashlytics
对于一个应用来说,异常崩溃信息收集至关重要,接触过flutter的开发者应该都知道,flutter使用dart开发大部分异常信息都是导致页面显示不正确(页面显示错误栈信息)或者者空白,那flutter如何捕获这些异常,捕获异常后又如何收集上报监控系统,对于原生开发者来说,Fabric Crashlytics(崩溃收集系统)大家一定不陌生,本文讲述Flutter如何使用fabric进行异常信息收集监控。主要分如下三步:
一 ?Flutter dart端捕获异常
使用FlutterError.onError 和 runZoned, 在main.dart的main()方法中增加如下代码:
二 通过channel把异常信息传到native:
上图代码中_reportError()是就是通过channel调用native方法,把error栈的信息传的native中,channel具体用法参考flutter platform channel详解,native端接收到error栈信息后如何上报fabric,请看第三步。
三 fabric收集异常信息
接入过fabric的开发者理解,fabric的接入及其简单,调用SDK的init及set deviceId少量基本信息就ok, 开发者并不需要主动去上传错误信息,fabric源码内部是通过实现Thread.UncaughtExceptionHandler接口,即自己设置?Thread.UncaughtExceptionHandler来实现的,在uncaughtException方法中接收到错误信息并进行上报的,?之后把错误信息传递给默认的Exception解决器(注意这里所说的默认Exception解决器是在fabric源码初始化方法里通过Thread.getDefaultUncaughtExceptionHandler()获取的(并不肯定是系统的哦)。
对于fabric收集大都是导致应用崩溃的错误日志,而对于flutter来说大部分异常信息只是页面上显示问题,并不会导致应用崩溃,我们只是想要向fabric上报异常信息,那要怎样做呢?其实方法很简单,只需分小三步:
1 、 定义FlutterException(继承Exception), 并且在应用内自己设置Thread.UncaughtExceptionHandler,命名FlutterExceptionHandler,代码如下,注意init中的两行代码,很关键哦
在uncaughtException中对应FlutterException的异常,直接return,这样就不会往下传递到系统Exception解决器了,即可以保证应用不崩溃
2、 在fabric调用init方法之前进行FlutterExceptionHandler init,这样刚才提到的fabric里的默认Exception解决器就是FlutterExceptionHandler了
3、 在接收到dart端传过来的errro信息处调用Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), new FlutterException(exceptionStr))就可。
(另外,说明下假如在第二小步之后没有其余地方调用Thread.setDefaultUncaughtExceptionHandler()的情况 这里的Thread.getDefaultUncaughtExceptionHandler() 为fabric sdk里的CrashlyticsUncaughtExceptionHandler )
在dart端制造个错误信息,实验下吧,这样打开fabric系统,就能看到异常信息了
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Flutter异常信息收集-Fabric Crashlytics