Flutter bugly 傻瓜式操作,上传崩溃日志与符号表解析之IOS

1.集成 bugly 在 pod 文件内添加引用,然后在 IOS 目录下打开终端 运行 pod install 命令

2.代码完成日志收集 

2.1)先编写 flutter 端代码
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();

    }

  }

}

2.2)首先在Runner-Bridging-Header文件中引入Bugly头文件

2.3)然后编写 flutter 与 ios 交互代码

注:12 行 打码的是bugly  IOS 应用的 appid

        15 行为原生交互的通道名 (自定义的 只要与flutter 声明的一致即可)

到目前为止代码即编写完成  然后就是 ios 的符号表上传了

3.在 bugly 官网找到符号表相关栏目

4.下载符号表工具(这里下载对应版本的符号表工具)

5.通过文档找到符号表工具使用的方法

java -jar buglyqq-upload-symbol.jar -appid <bugly应用的appid> -appkey <bugly应用的appkey> -bundleid <android app 的包名> -version <android app 的版本> -platform IOS -inputSymbol <下载下来的符号表>

6.接下来就是把命令行需要的这些东西都找出来

appid和appkey都是在 buylg 官网第一步创建的应用中可以获取

bundleid在 flutter/android/app/build.gradle文件下的applicationId

version 同上面目录下的versionName

inputSymbol 获取就比较麻烦 在下一步操作

7.先通过命令行获取Engine的 id

8.在flutter_infra中下载对应的符号表解析对照文件

附上地址 https://console.cloud.google.com/storage/browser/flutter_infra_release/flutter;tab=objects?prefix=&forceOnObjectsSortingFiltering=false

9.内容太多 将9 步获取的 id  b20183e040筛选一下 ,就找到对应的符号表了

10.根据实际情况下载ios-release目录下Flutter.dSYM.zip 文件 然后解压出来

11.最终将刚才获取的那些东西替换成下面然后执行即可

java -jar buglyqq-upload-symbol.jar -appid *** -appkey *** -bundleid *** -version *** -platform Android -inputSymbol /Users/***/Downloads/Flutter.dSYM

12.命令行成功的界面

现在上传 flutter 的符号表已经完成  但是 ios 还有一个麻烦的就是原生也需要符号表 接下来拿出原生的符号表

13.在菜单栏的 window -> Organizer 打开编译的包的记录,找到当前包点击 Show in Finder

14.点击显示包内容

15.找到需要上传的符号表

16.上传符号表跟刚才一致,就是把-inputSymbol的目录换成 Runner.appdSYM。这个 Runner 其实是 flutter 项目中 iOS 项目的名字。