Flutter崩溃报告插件flutter_bugly_latest的使用
Flutter崩溃报告插件flutter_bugly_latest
的使用
简介
flutter_bugly_latest
是一个用于收集 Android 和 iOS 应用程序崩溃报告的 Flutter 插件。它支持原生异常上报和 Flutter 异常上报,并且兼容官方最新 SDK 功能,无需担心 Google 关联问题。
一、引入插件
在 pubspec.yaml
文件中添加依赖:
dependencies:
flutter_bugly_latest: lastVersion
或者通过 Git 仓库引入:
dependencies:
flutter_bugly_latest:
git:
url: git@github.com:zuiaijj/flutter_bugly_latest.git
ref: main
二、项目配置
在 android/app/build.gradle
的 android
配置块中添加以下内容:
lintOptions {
// 解决打包时出现的 lint 问题
checkReleaseBuilds false
}
defaultConfig {
ndk {
// 设置支持的 SO 库架构
abiFilters 'armeabi-v7a'//, 'arm64-v8a', 'x86', 'x86_64'
}
}
三、使用插件
初始化插件并启用 Flutter 异常捕获:
import 'package:flutter_bugly/flutter_bugly.dart';
void main() => FlutterBugly.postCatchedException(() {
runApp(MyApp());
});
FlutterBugly.init(
androidAppId: "your android app id",
iOSAppId: "your iOS app id",
);
四、Release 打包(Android)
生成 64 位 APK:
flutter build apk --release --target-platform android-arm64
生成 32 位 APK(推荐配合 armeabi-v7a
使用):
flutter build apk --release --target-platform android-arm
五、支持的属性(Android)
以下是插件支持的主要属性:
String channel, // 自定义渠道标识
bool autoCheckUpgrade = true, // 自动检查更新开关
bool autoInit = true, // 自动初始化
bool autoDownloadOnWifi = false, // WiFi 下自动下载开关
bool enableNotification = false, // 通知栏开关
bool showInterruptedStrategy = true, // 打断策略开关
bool canShowApkInfo = true, // 显示 APK 信息开关
bool customUpgrade = true, // 是否使用自定义弹窗
int initDelay = 0, // 初始化延迟时间(秒)
int upgradeCheckPeriod = 0, // 升级检查周期(秒)
// 手动检查更新
void checkUpgrade({
bool isManual = false, // 是否手动触发检查
bool isSilence = false, // 是否静默检查(不显示弹窗或 toast)
})
void setUserId(String userId); // 设置用户 ID
void putUserData({String key, String value}); // 添加用户数据
void setUserTag(int tag); // 设置用户标签
六、自定义弹窗(Android)
通过 FlutterBugly.getUpgradeInfo()
获取更新策略信息,并手动弹窗展示:
UpgradeInfo info = await FlutterBugly.getUpgradeInfo();
if (info != null) {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(info.title),
content: Column(
children: [
Text(info.newFeature),
Text("版本号: ${info.versionName}"),
],
),
actions: [
TextButton(
onPressed: () {
// 下载 APK
launchUrl(Uri.parse(info.apkUrl));
},
child: Text("立即更新"),
),
],
),
);
}
七、说明(Android)
异常上报说明
-
Flutter 异常上报 不属于崩溃,因此需要在【错误分析】选项卡中查看:
-
iOS 异常上报 测试不足,如遇问题请提交 Issue。
已知问题
- 第一次接收到更新策略后,不会弹窗,需退出应用重新进入。
- 官方未适配 8.0 Notification,如需使用请自行实现业务逻辑。
- 在
targetSdkVersion
26 以上请勿启用autoDownloadOnWifi
,否则可能导致更新策略失效。 - 使用
androidx
包时,请配合getUpgradeInfo()
或checkUpgrade()
方法自定义弹窗。
示例代码
以下是一个完整的示例代码,展示了如何集成和使用插件:
import 'package:flutter/material.dart';
import 'package:flutter_bugly/flutter_bugly.dart';
void main() => FlutterBugly.postCatchedException(
() => runApp(MyApp()),
debugUpload: true,
);
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
State<StatefulWidget> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String _platformVersion = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
FlutterBugly.init(
androidAppId: "your android app id",
iOSAppId: "your iOS app id",
).then((result) {
setState(() {
_platformVersion = result.message;
});
});
FlutterBugly.setUserId("user id");
FlutterBugly.putUserData(key: "key", value: "value");
int tag = 9527;
FlutterBugly.setUserTag(tag);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Bugly Example'),
),
body: Center(
child: Text('初始化结果: $_platformVersion\n'),
),
);
}
}
更多关于Flutter崩溃报告插件flutter_bugly_latest的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter崩溃报告插件flutter_bugly_latest的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_bugly_latest
是一个用于 Flutter 应用的崩溃报告插件,它集成了腾讯的 Bugly 服务,可以帮助开发者捕获应用中的崩溃信息,并提供详细的崩溃报告。以下是使用 flutter_bugly_latest
插件的步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 flutter_bugly_latest
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_bugly_latest: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 Bugly
在你的 Flutter 应用中初始化 Bugly。通常可以在 main.dart
文件中进行初始化:
import 'package:flutter/material.dart';
import 'package:flutter_bugly_latest/flutter_bugly.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Bugly
await FlutterBugly.init(
androidAppId: 'your_android_app_id', // 替换为你的 Android App ID
iOSAppId: 'your_ios_app_id', // 替换为你的 iOS App ID
debugMode: true, // 是否开启调试模式
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Bugly Example',
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Bugly Example'),
),
body: Center(
child: Text('Hello, Bugly!'),
),
),
);
}
}
3. 配置 Android 和 iOS 项目
Android 配置
在 android/app/build.gradle
文件中添加以下配置:
android {
...
defaultConfig {
...
ndk {
// 设置支持的 SO 库架构
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}
}
iOS 配置
在 ios/Runner/Info.plist
文件中添加以下配置:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
4. 捕获自定义异常
你可以使用 FlutterBugly
来捕获自定义异常:
try {
// 你的代码
} catch (e, stackTrace) {
FlutterBugly.postException(
error: e.toString(),
stackTrace: stackTrace.toString(),
);
}
5. 上传用户信息(可选)
你可以上传用户信息以便在 Bugly 后台查看:
FlutterBugly.setUserId('user_id');
FlutterBugly.setUserTag('user_tag');
FlutterBugly.setUserData('user_data');
6. 测试崩溃报告
为了确保 Bugly 正常工作,你可以在代码中故意引发一个崩溃:
void triggerCrash() {
List<int> list = [];
print(list[1]); // 这将引发一个越界异常
}