赞
踩
此处不表并附上官网地址 腾讯Bugly - 一种愉悦的开发方式 _android anr_android anr分析_iOS崩溃日志分析平台
- android {
-
- defaultConfig {
-
- ndk {
-
- // 设置支持的SO库架构
-
- abiFilters 'armeabi’
- //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a’
-
- }
-
- }
-
- }
-
- dependencies {
-
- implementation 'com.tencent.bugly:crashreport:latest.release’
- //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如4.0.3
- }
- 通过“AndroidManifest.xml”配置后的初始化方法如下:
-
- CrashReport.initCrashReport(getApplicationContext());
- main() {
-
- AppCatchError().run(App());
-
- }
-
- //全局异常的捕捉
-
- class AppCatchError {
-
- run(Widget app) {
-
- // Flutter 框架异常
-
- FlutterError.onError = (FlutterErrorDetails details) async {
-
- // 线上环境
-
- Map map = {};
-
- map["error"] = details.toString();
-
- MethodManager.invokeCatchedException(map);
-
- if (kReleaseMode) {
-
- Zone.current.handleUncaughtError(details.exception, details.stack!);
-
- } else {
-
- // 开发期间 print
-
- FlutterError.dumpErrorToConsole(details);
-
- }
-
- if (EasyLoading.isShow) {
-
- EasyLoading.dismiss();
-
- }
-
- logger.e(details.toString());
-
- };
-
- runZonedGuarded(() {
-
- // 受保护的代码块
-
- runApp(app);
-
- }, (error, stack) => catchError(error, stack));
-
- }
-
- ///对搜集的 异常进行处理 上报等等
-
- catchError(Object error, StackTrace stack) {
-
- logger.e('错误 message:$error,stack: $stack');
-
- Map map = {};
-
- map["error"] = "$error########################### stack$stack”;
- // 此处为 flutter 与原生交互 将 error 传给原生
- MethodManager.invokeCatchedException(map);
- if (EasyLoading.isShow) {
- EasyLoading.dismiss();
- }
- }
- }
- 原生中接收的代码
-
- if (methodCall.method.equals("postCatchedException")) {
-
- // 错误日志上传bugly
-
- String error = methodCall.argument("error");
-
- CrashReport.postCatchedException(new Throwable(error));
-
- }
此处如果不知道怎么跟原生交互,可以看我其他文章 有详细说明
到这个地方日志上报就完成了,但是这时候会发现 flutter 相关的错误在 bugly 上会是一些特殊符号无法解析出来 就需要解析符号表
java -jar buglyqq-upload-symbol.jar -appid <bugly应用的appid> -appkey <bugly应用的appkey> -bundleid <android app 的包名> -version <android app 的版本> -platform Android -inputSymbol <下载下来的符号表>
appid和appkey都是在 buylg 官网第一步创建的应用中可以获取
bundleid在 flutter/android/app/build.gradle文件下的applicationId
version 同上面目录下的versionName
inputSymbol 获取就比较麻烦 在下一步操作
java -jar buglyqq-upload-symbol.jar -appid *** -appkey *** -bundleid *** -version *** -platform Android -inputSymbol /Users/***/Downloads/libflutter.so
这样就 ok 了 然后你再去 bugly 的日志上报上面看就能看到 正常的 flutter 的日志了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。