flutter_bugly

Introduction: 腾讯 Bugly flutter 应用更新统计及异常上报插件,支持 Android、iOS
More: Author   ReportBugs   
Tags:

Bugly package Bugly Play package Gitter

腾讯 Bugly 插件,支持 Android/iOS 运营统计、原生异常上报、flutter 异常上报、应用更新。


一、引入

AndroidX

因为大部分主流插件都已升级 androidx,所以 pub 库升级 androidx,版本更新弹窗问题见下面说明

dependencies:
  flutter_bugly: lastVersion

Google Play

dependencies:
  flutter_bugly_play: lastVersion

Android Support

dependencies:
  flutter_bugly:
    git:
      url: git://github.com/crazecoder/flutter_bugly.git
      ref: dev

二、项目配置

android/app/build.gradle 的 android 下加入:

    lintOptions {
        // 如打包出现 Failed to transform libs.jar to match attributes
        checkReleaseBuilds false
    }
    defaultConfig {
        ndk {
            // 设置支持的 so 库架构 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
            abiFilters 'armeabi-v7a'
        }
    }

三、使用

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)

 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 参数:

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 页查看

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()【两种方法区别见方法注释】方法自定义弹窗界面 弹窗示例或者有下载打开安装的完整示例

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools