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进行崩溃捕获与分析。
        
      
            
            
            
