原生app、flutter app集成腾讯bugly收集错误信息 本文共有4152个字,关键词: 腾讯 Bugly 插件,支持Android/iOS 运营统计、原生异常上报、flutter 异常上报、应用更新。 首先需要在https://bugly.qq.com/ 添加应用,拿到App ID,后边需要用到。App key收集bug用不到。 ####1、安卓原生集成bugly ##### (1) 在Module的build.gradle文件中添加依赖: ``` dependencies { compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.2.0 } ``` ##### (2)参数配置: 在AndroidManifest.xml中添加权限: ``` ``` ##### (3) 添加混淆: 请避免混淆Bugly,在Proguard混淆文件中增加以下配置: ``` -dontwarn com.tencent.bugly.** -keep public class com.tencent.bugly.**{*;} ``` ##### (4)最简单的初始化: 获取APP ID并将以下代码复制到项目Application类onCreate()中,Bugly会为自动检测环境并完成配置: ``` //APP ID放到第二个参数中即可 CrashReport.initCrashReport(getApplicationContext(), "注册时申请的APPID", false); ``` 第三个参数为SDK调试模式开关,调试模式的行为特性如下: 输出详细的Bugly SDK的Log; 每一条Crash都会被立即上报; 自定义日志将会在Logcat中输出。 建议在测试阶段建议设置成true,发布时设置为false。 4.简单bugly接入已经完成了,现在可以写一个测试bug进行测试了 如: ``` String s = null; System.out.println(s); ``` 奔溃结果就可以在后台看到了: 点击项目名称——>奔溃分析即可看到反馈 #### 2、flutter app集成bugly。 ##### 一、引入 ###### 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页查看 2、iOS的异常上报没有过多测试。 × yihong (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 码农心得 2022-05-08 评论 2771 次浏览