Flutter崩溃捕获与分析插件tencent_bugly_plugin的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter崩溃捕获与分析插件tencent_bugly_plugin的使用

flutter_bugly_plugin

pub package stars

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.**{*;}

初始化

在任意区域调用。androidIDios为必传参数,其他为可选项。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

1 回复

更多关于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的Zonetry-catch机制。

6. 查看崩溃报告

初始化完成后,应用崩溃时会自动上报崩溃信息到Bugly后台。你可以登录Bugly控制台查看和分析崩溃报告。

注意事项

  • 确保你的Bugly App ID正确无误。
  • 根据你的项目需求,可能需要在不同平台(Android和iOS)上进行额外的配置。
  • 详细的使用和配置信息请参考tencent_bugly_plugin官方文档(如果有的话)。

通过上述步骤,你应该能够在Flutter项目中成功集成并使用tencent_bugly_plugin进行崩溃捕获与分析。

回到顶部