实用

android bugly 坑位

2022-07-21  本文已影响0人  客观开发者

说明

腾讯Bugly,为移动开发者提供专业的异常上报和运营统计,帮助开发者快速发现并解决异常,同时掌握产品运营动态,及时跟进用户反馈。
主要是三个功能

直接继承

导入最新aar


image.png

初始化


image.png

这样就把异常和升级都继承了。

1、先说CrashReport ,这样后台缺少

image.png

用户id 和型号没有。用户id 是可以自己去定义的。

  CrashReport.setUserId("9527");
  CrashReport.setDeviceModel(appContext, "" + OtherUtils.getModel());

init 之前把这俩加上就 ok 了,如果 没有用id ,登录之后添加上也可以。

so符号表 Android平台中,Debug SO文件是指具有调试信息的SO文件,其中包含用户还原堆栈的符号信息。
没有用到,我觉得能用到so中的,都不差这个了吧。

2、再说版本更新
自定义UI

它的UI


image.png

我的UI

image.png

运行之后的UI


image.png

这里我修改了


image.png

title、banner、版本更新内容。

代码如下

image.png

// 自动更新。
Beta.autoCheckUpgrade = true;

    Beta.enableNotification = true;

//wifi 下自动下载
Beta.autoDownloadOnWifi = true;
Beta.canShowApkInfo = true;

layout 中需要注意的是
添加android:tag="beta_upgrade_feature"

这里需要添加 五个


image.png

界面随你写了。
替换banner 图


image.png

这里写在start 里面的,create里面报错。

在init 之前进行。。

选择他的原因是 每次可以有1,000,000 次的版本更新。
可以每个市场做一个,


image.png

渠道写一个华为小米oppo登录,这样戳戳有余了吧。。。
自定义UI 这样很好吧。

最后统计模块看


image.png

错误信息、bug信息统计数据,很全了。就是当天的看到会晚一会。。

强制和不强制功能


image.png

统计


image.png

api 的使用

Bugly.init(this, APP_ID, false);//初始化统一接口
 Beta.autoInit = true;//自动初始化开关,true表示app启动自动初始化升级模块; false不会自动初始化; 开发者如果担心sdk初始化影响app启动速度,可以设置为false,在后面某个时刻手动调用Beta.init(getApplicationContext(),false);
 Beta.autoCheckUpgrade = true;//true表示初始化时自动检查升级; false表示不会自动检查升级,需要手动调用Beta.checkUpgrade()方法;
 Beta.upgradeCheckPeriod = 60 * 1000;//设置升级检查周期为60s(默认检查周期为0s),60s内SDK不重复向后台请求策略);
 Beta.initDelay = 1 * 1000;//设置启动延时为1s(默认延时3s),APP启动1s后初始化SDK,避免影响APP启动速度;
 Beta.largeIconId = R.drawable.ic_launcher;//设置通知栏大图标,largeIconId为项目中的图片资源;
 Beta.smallIconId = R.drawable.ic_launcher;//设置状态栏小图标
 Beta.storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);//设置sd卡的Download为更新资源存储目录
Beta.canShowUpgradeActs.add(MainActivity.class);//添加可显示弹窗的Activity,例如,只允许在MainActivity上显示更新弹窗,其他activity上不显示弹窗; 如果不设置默认所有activity都可以显示弹窗。
Beta.autoDownloadOnWifi = true;//设置Wifi下自动下载,默认false
Beta.enableHotfix = true;//升级SDK默认是开启热更新能力的,如果你不需要使用热更新,可以将这个接口设置为false。

其他

 /**
    * 手动检查更新(用于设置页面中检测更新按钮的点击事件)
    */
    public static synchronized void checkUpgrade()

    /**
    * 获取本地已有升级策略(非实时,可用于界面红点展示)
    *
    * @return
    */
    public static synchronized UpgradeInfo getUpgradeInfo()

    /**
    * @param isManual  用户手动点击检查,非用户点击操作请传false
    * @param isSilence 是否显示弹窗等交互,[true:没有弹窗和toast] [false:有弹窗或toast]
    */
    public static synchronized void checkUpgrade(boolean isManual, boolean isSilence)

最后热更新

image.png

我的版本不匹配,另外需要的是降低gradle 版本。否则很那在升上去了。
看到这个

Beta.betaPatchListener = new BetaPatchListener() {
            @Override
            public void onPatchReceived(String patchFileUrl) {
//                Toast.makeText(getApplicationContext(), patchFileUrl, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onDownloadReceived(long savedLength, long totalLength) {
//                Toast.makeText(getApplicationContext(), String.format(Locale.getDefault(),
//                        "%s %d%%",
//                        Beta.strNotificationDownloading,
//                        (int) (totalLength == 0 ? 0 : savedLength * 100 / totalLength)), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onDownloadSuccess(String patchFilePath) {
//                Toast.makeText(getApplicationContext(), patchFilePath, Toast.LENGTH_SHORT).show();
//                Beta.applyDownloadedPatch();
//                Beta.applyTinkerPatch(getApplicationContext(), patchFilePath);
            }

            @Override
            public void onDownloadFailure(String msg) {
//                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onApplySuccess(String msg) {
//                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onApplyFailure(String msg) {
//                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onPatchRollback() {
//                Toast.makeText(getApplicationContext(), "onPatchRollback", Toast.LENGTH_SHORT).show();
            }
        };

我有了新思路了。

上一篇下一篇

猜你喜欢

热点阅读