說(shuō)明
騰訊Bugly则剃,為移動(dòng)開(kāi)發(fā)者提供專業(yè)的異常上報(bào)和運(yùn)營(yíng)統(tǒng)計(jì)耘柱,幫助開(kāi)發(fā)者快速發(fā)現(xiàn)并解決異常,同時(shí)掌握產(chǎn)品運(yùn)營(yíng)動(dòng)態(tài)棍现,及時(shí)跟進(jìn)用戶反饋调煎。
主要是三個(gè)功能
直接繼承
導(dǎo)入最新aar
初始化
這樣就把異常和升級(jí)都繼承了。
1己肮、先說(shuō)CrashReport 士袄,這樣后臺(tái)缺少
用戶id 和型號(hào)沒(méi)有。用戶id 是可以自己去定義的朴肺。
CrashReport.setUserId("9527");
CrashReport.setDeviceModel(appContext, "" + OtherUtils.getModel());
init 之前把這倆加上就 ok 了窖剑,如果 沒(méi)有用id 坚洽,登錄之后添加上也可以戈稿。
so符號(hào)表 Android平臺(tái)中,Debug SO文件是指具有調(diào)試信息的SO文件讶舰,其中包含用戶還原堆棧的符號(hào)信息鞍盗。
沒(méi)有用到,我覺(jué)得能用到so中的跳昼,都不差這個(gè)了吧般甲。
2、再說(shuō)版本更新
自定義UI
它的UI
我的UI
運(yùn)行之后的UI
這里我修改了
title鹅颊、banner敷存、版本更新內(nèi)容。
代碼如下
// 自動(dòng)更新。
Beta.autoCheckUpgrade = true;
Beta.enableNotification = true;
//wifi 下自動(dòng)下載
Beta.autoDownloadOnWifi = true;
Beta.canShowApkInfo = true;
layout 中需要注意的是
添加android:tag="beta_upgrade_feature"
這里需要添加 五個(gè)
界面隨你寫(xiě)了锚烦。
替換banner 圖
這里寫(xiě)在start 里面的觅闽,create里面報(bào)錯(cuò)。
在init 之前進(jìn)行涮俄。蛉拙。
選擇他的原因是 每次可以有1,000,000 次的版本更新。
可以每個(gè)市場(chǎng)做一個(gè)彻亲,
渠道寫(xiě)一個(gè)華為小米o(hù)ppo登錄孕锄,這樣戳戳有余了吧。苞尝。畸肆。
自定義UI 這樣很好吧。
最后統(tǒng)計(jì)模塊看
錯(cuò)誤信息野来、bug信息統(tǒng)計(jì)數(shù)據(jù)恼除,很全了。就是當(dāng)天的看到會(huì)晚一會(huì)曼氛。豁辉。
強(qiáng)制和不強(qiáng)制功能
統(tǒng)計(jì)
api 的使用
Bugly.init(this, APP_ID, false);//初始化統(tǒng)一接口
Beta.autoInit = true;//自動(dòng)初始化開(kāi)關(guān),true表示app啟動(dòng)自動(dòng)初始化升級(jí)模塊; false不會(huì)自動(dòng)初始化; 開(kāi)發(fā)者如果擔(dān)心sdk初始化影響app啟動(dòng)速度,可以設(shè)置為false舀患,在后面某個(gè)時(shí)刻手動(dòng)調(diào)用Beta.init(getApplicationContext(),false);
Beta.autoCheckUpgrade = true;//true表示初始化時(shí)自動(dòng)檢查升級(jí); false表示不會(huì)自動(dòng)檢查升級(jí),需要手動(dòng)調(diào)用Beta.checkUpgrade()方法;
Beta.upgradeCheckPeriod = 60 * 1000;//設(shè)置升級(jí)檢查周期為60s(默認(rèn)檢查周期為0s)徽级,60s內(nèi)SDK不重復(fù)向后臺(tái)請(qǐng)求策略);
Beta.initDelay = 1 * 1000;//設(shè)置啟動(dòng)延時(shí)為1s(默認(rèn)延時(shí)3s),APP啟動(dòng)1s后初始化SDK聊浅,避免影響APP啟動(dòng)速度;
Beta.largeIconId = R.drawable.ic_launcher;//設(shè)置通知欄大圖標(biāo),largeIconId為項(xiàng)目中的圖片資源;
Beta.smallIconId = R.drawable.ic_launcher;//設(shè)置狀態(tài)欄小圖標(biāo)
Beta.storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);//設(shè)置sd卡的Download為更新資源存儲(chǔ)目錄
Beta.canShowUpgradeActs.add(MainActivity.class);//添加可顯示彈窗的Activity,例如餐抢,只允許在MainActivity上顯示更新彈窗,其他activity上不顯示彈窗; 如果不設(shè)置默認(rèn)所有activity都可以顯示彈窗低匙。
Beta.autoDownloadOnWifi = true;//設(shè)置Wifi下自動(dòng)下載,默認(rèn)false
Beta.enableHotfix = true;//升級(jí)SDK默認(rèn)是開(kāi)啟熱更新能力的旷痕,如果你不需要使用熱更新,可以將這個(gè)接口設(shè)置為false顽冶。
其他
/**
* 手動(dòng)檢查更新(用于設(shè)置頁(yè)面中檢測(cè)更新按鈕的點(diǎn)擊事件)
*/
public static synchronized void checkUpgrade()
/**
* 獲取本地已有升級(jí)策略(非實(shí)時(shí)欺抗,可用于界面紅點(diǎn)展示)
*
* @return
*/
public static synchronized UpgradeInfo getUpgradeInfo()
/**
* @param isManual 用戶手動(dòng)點(diǎn)擊檢查,非用戶點(diǎn)擊操作請(qǐng)傳false
* @param isSilence 是否顯示彈窗等交互强重,[true:沒(méi)有彈窗和toast] [false:有彈窗或toast]
*/
public static synchronized void checkUpgrade(boolean isManual, boolean isSilence)
最后熱更新
我的版本不匹配绞呈,另外需要的是降低gradle 版本。否則很那在升上去了间景。
看到這個(gè)
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();
}
};
我有了新思路了佃声。