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中下载对应的符号表解析对照文件
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 还有一个麻烦的就是原生也需要符号表 接下来拿出原生的符号表