Flutter崩溃捕获与分析插件tencent_bugly_plugin的使用
Flutter崩溃捕获与分析插件tencent_bugly_plugin的使用
flutter_bugly_plugin
Flutter Bugly 插件,只集成了崩溃统计。
Bugly版本
- Android Bugly Version: 4.1.9.3
- IOS Bugly Version: 2.6.1
使用
在pubspec.yaml
文件中添加依赖:
dependencies:
tencent_bugly_plugin: ^latest
混淆
Android需要配置混淆:
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
初始化
在任意区域调用。androidID
与ios
为必传参数,其他为可选项。flutterError
为Flutter错误回调。
BuglyPlugin.initBugly(
BuglyConfig(
androidAppId: "your android AppId",
iosAppId: "your ios AppId",
channel: "your channel",
debugMode: true,
),
flutterError: (flutterError) {
print("receive error: $flutterError");
print("errorinfo = ${flutterError.exception};");
print("stack = ${flutterError.stack}");
}
);
上报自己try catch的异常
BuglyPlugin.reportException(String errorInfo, String errorStack);
Dart触发的错误将在Bugly的错误界面上显示。
完整示例Demo
以下是一个完整的示例Demo,展示了如何使用tencent_bugly_plugin
插件来捕获和分析崩溃。
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:tencent_bugly_plugin/bugly_config.dart';
import 'package:tencent_bugly_plugin/bugly_plugin.dart';
void main() {
// 初始化Bugly插件
BuglyPlugin.initBugly(
BuglyConfig(
androidAppId: "b9668c775a", // 你的Android AppId
iosAppId: "15910284fd", // 你的iOS AppId
channel: "Demo", // 渠道
debugMode: true, // 调试模式
),
flutterError: (flutterError) {
print("receive error: $flutterError");
print("errorinfo = ${flutterError.exception};");
print("stack = ${flutterError.stack}");
}
);
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
// 异步初始化平台状态
Future<void> initPlatformState() async {
String platformVersion;
// 使用try/catch处理可能的平台异常
try {
platformVersion = await BuglyPlugin.getPlatformVersion() ?? 'Unknown platform version';
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
// 如果组件已经从树中移除,则不更新UI
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Column(
children: [
Text('Running on: $_platformVersion\n'),
ElevatedButton(
onPressed: () {
// 抛出一个测试异常
throw Exception('OnlyTestFlutterCodeCrash');
},
child: Text("Test DartCrash"),
),
ElevatedButton(
onPressed: () {
// 触发原生代码崩溃测试
BuglyPlugin.testNativeCrash();
},
child: Text("Test NativeCrash"),
)
],
),
),
),
);
}
}
更多关于Flutter崩溃捕获与分析插件tencent_bugly_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter崩溃捕获与分析插件tencent_bugly_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用tencent_bugly_plugin
来进行崩溃捕获与分析的代码案例。tencent_bugly_plugin
是腾讯Bugly提供的Flutter插件,用于捕获和分析应用崩溃信息。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加tencent_bugly_plugin
依赖:
dependencies:
flutter:
sdk: flutter
tencent_bugly_plugin: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android平台
在android/app/src/main/AndroidManifest.xml
文件中添加Bugly的权限和配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<!-- 添加网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- Bugly Application配置 -->
<application
... >
<meta-data
android:name="com.tencent.bugly.APP_ID"
android:value="你的Bugly App ID" /> <!-- 请替换为你的Bugly App ID -->
</application>
</manifest>
3. 配置iOS平台
在ios/Runner/Info.plist
文件中添加Bugly的配置(如果需要):
<key>CFBundleDisplayName</key>
<string>YourAppDisplayName</string>
<!-- 其他配置根据需要添加 -->
此外,你可能需要在ios/Podfile
中添加一些必要的配置,具体可以参考tencent_bugly_plugin
的官方文档。
4. 初始化Bugly
在你的Flutter项目的main.dart
文件中初始化Bugly:
import 'package:flutter/material.dart';
import 'package:tencent_bugly_plugin/tencent_bugly_plugin.dart';
void main() {
// 初始化Bugly
Bugly.init(
androidAppId: '你的Bugly App ID', // 请替换为你的Bugly App ID
iosAppId: '你的iOS平台Bugly App ID', // 如果需要,请替换为你的iOS平台Bugly App ID
)
.then((_) {
runApp(MyApp());
})
.catchError((error) {
print('Bugly initialization failed: $error');
runApp(MaterialApp(home: Scaffold(body: Center(child: Text('Error initializing Bugly')))));
});
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 模拟崩溃
throw UnimplementedError('Simulated crash');
},
child: Text('Crash'),
),
),
);
}
}
5. 捕获和处理崩溃
tencent_bugly_plugin
会自动捕获未处理的异常并将其上报到Bugly后台。如果你需要捕获特定的异常或进行更多自定义处理,可以结合Flutter的Zone
或try-catch
机制。
6. 查看崩溃报告
初始化完成后,应用崩溃时会自动上报崩溃信息到Bugly后台。你可以登录Bugly控制台查看和分析崩溃报告。
注意事项
- 确保你的Bugly App ID正确无误。
- 根据你的项目需求,可能需要在不同平台(Android和iOS)上进行额外的配置。
- 详细的使用和配置信息请参考
tencent_bugly_plugin
的官方文档(如果有的话)。
通过上述步骤,你应该能够在Flutter项目中成功集成并使用tencent_bugly_plugin
进行崩溃捕获与分析。