# flutter_bugly **Repository Path**: leixun/flutter_bugly ## Basic Information - **Project Name**: flutter_bugly - **Description**: flutter bugly封装 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-16 - **Last Updated**: 2022-05-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # flutter_bugly [![Bugly package](https://img.shields.io/pub/v/flutter_bugly.svg)](https://pub.dev/packages/flutter_bugly) [![Bugly Play package](https://img.shields.io/pub/v/flutter_bugly_play?label=bugly_play)](https://pub.dev/packages/flutter_bugly) [![Gitter](https://badges.gitter.im/flutter_developer/community.svg)](https://gitter.im/flutter_developer/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) 腾讯 Bugly 插件,支持Android/iOS 运营统计、原生异常上报、flutter 异常上报、应用更新。 --- ## 一、引入 ### AndroidX 因为大部分主流插件都已升级 androidx,所以 pub 库升级 androidx,版本更新弹窗问题见下面说明 ```yaml dependencies: flutter_bugly: lastVersion ``` ### Google Play ```yaml dependencies: flutter_bugly_play: lastVersion ``` ### Android Support ```yaml dependencies: flutter_bugly: git: url: git://github.com/crazecoder/flutter_bugly.git ref: dev ``` ## 二、项目配置 在 `android/app/build.gradle` 的 android 下加入: ```gradle lintOptions { // 如打包出现Failed to transform libs.jar to match attributes checkReleaseBuilds false } defaultConfig { ndk { // 设置支持的 so 库架构 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' abiFilters 'armeabi-v7a' } } ``` ## 三、使用 ```dart import 'package:flutter_bugly/flutter_bugly.dart'; /// 使用 flutter 异常上报 void main() { FlutterBugly.postCatchedException(() { // 如果需要 ensureInitialized,请在这里运行。 // WidgetsFlutterBinding.ensureInitialized(); runApp(MyApp()); FlutterBugly.init( androidAppId: "your android app id", iOSAppId: "your iOS app id", ); }); } ``` ## 四、release打包(Android) 64-bit `flutter build apk --release --target-platform android-arm64` 32-bit(目前配合armeabi-v7a可以打出32位64位通用包) `flutter build apk --release --target-platform android-arm` ## 五、支持属性(Android) ```dart 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, //设置是否使用flutter自定义窗口,false为bugly自带弹窗 int initDelay = 0, //延迟初始化,单位秒 int upgradeCheckPeriod = 0, //升级检查周期设置,单位秒 //手动检查更新 checkUpgrade({ bool isManual = false,//用户手动点击检查,非用户点击操作请传false bool isSilence = false,//是否显示弹窗等交互,[true:没有弹窗和toast] [false:有弹窗或toast] }) FlutterBugly.setUserId("user id"); FlutterBugly.putUserData(key: "key", value: "value"); int tag = 9527; FlutterBugly.setUserTag(tag); ``` ## 六、自定义弹窗(Android) 通过 `FlutterBugly.getUpgradeInfo()` 获取更新策略信息填入自定义 flutter widget,手动弹窗 UpgradeInfo 参数: ```java String id = "";//唯一标识 String title = "";//升级提示标题 String newFeature = "";//升级特性描述 long publishTime = 0;//升级发布时间,ms int publishType = 0;//升级类型 0测试 1正式 int upgradeType = 1;//升级策略 1建议 2强制 3手工 int popTimes = 0;//提醒次数 long popInterval = 0;//提醒间隔 int versionCode; String versionName = ""; String apkMd5;//包md5值 String apkUrl;//APK的CDN外网下载地址 long fileSize;//APK文件的大小 String imageUrl; // 图片url ``` ## 七、说明(Android) 异常上报说明 1、flutter异常上报不属于崩溃,所以如需查看 flutter 的异常上报,请在「错误分析」tab页查看 ![](https://github.com/crazecoder/flutter_bugly/blob/1ff1928b3215a8fa1c8fb99c3071692da322e278/screenshot/crash.png) 2、iOS的异常上报没有过多测试,如出现问题请 issue 目前已知问题 ~~1、第一次接受到更新策略之后,不会弹窗,即使手动检查更新也不会,需要退出app之后再进入,才会有弹窗(已解决)~~ ~~2、官方没有适配8.0的notification,所以如果需要用到notification的时候请关闭后(默认关闭),自己写相关业务逻辑,或者直接把gradle里的targetSdkVersion设成26以下(方法见示例)~~ 官方已适配 ~~3、请勿在targetSdkVersion 26以上设置autoDownloadOnWifi = true,会导致在8.0以上机型更新策略没有反应~~ ~~4、因为版本更新弹窗封装进sdk,使用的是support包,所以使用androidx包时,请配合FlutterBugly.getUpgradeInfo()或者FlutterBugly.checkUpgrade()【两种方法区别见方法注释】方法自定义弹窗界面 [弹窗示例](https://github.com/crazecoder/flutter_bugly/commit/6052890cee63ec1e433501e1149852878fd234de)或者[有下载打开安装的完整示例](https://github.com/crazecoder/testsocket/blob/master/lib/ui/home.dart)~~