说明
腾讯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();
}
};
我有了新思路了。