說明
騰訊Bugly,為移動開發(fā)者提供專業(yè)的異常上報和運營統(tǒng)計,幫助開發(fā)者快速發(fā)現(xiàn)并解決異常,同時掌握產品運營動態(tài),及時跟進用戶反饋。
主要是三個功能
直接繼承
導入最新aar

初始化

這樣就把異常和升級都繼承了。
1、先說CrashReport ,這樣后臺缺少

用戶id 和型號沒有。用戶id 是可以自己去定義的。
CrashReport.setUserId("9527");
CrashReport.setDeviceModel(appContext, "" + OtherUtils.getModel());
init 之前把這倆加上就 ok 了,如果 沒有用id ,登錄之后添加上也可以。
so符號表 Android平臺中,Debug SO文件是指具有調試信息的SO文件,其中包含用戶還原堆棧的符號信息。
沒有用到,我覺得能用到so中的,都不差這個了吧。
2、再說版本更新
自定義UI
它的UI

我的UI

運行之后的UI

這里我修改了

title、banner、版本更新內容。
代碼如下

// 自動更新。
Beta.autoCheckUpgrade = true;
Beta.enableNotification = true;
//wifi 下自動下載
Beta.autoDownloadOnWifi = true;
Beta.canShowApkInfo = true;
layout 中需要注意的是
添加android:tag="beta_upgrade_feature"
這里需要添加 五個

界面隨你寫了。
替換banner 圖

這里寫在start 里面的,create里面報錯。
在init 之前進行。。
選擇他的原因是 每次可以有1,000,000 次的版本更新。
可以每個市場做一個,

渠道寫一個華為小米oppo登錄,這樣戳戳有余了吧。。。
自定義UI 這樣很好吧。
最后統(tǒng)計模塊看

錯誤信息、bug信息統(tǒng)計數(shù)據,很全了。就是當天的看到會晚一會。。
強制和不強制功能

統(tǒng)計

api 的使用
Bugly.init(this, APP_ID, false);//初始化統(tǒng)一接口
Beta.autoInit = true;//自動初始化開關,true表示app啟動自動初始化升級模塊; false不會自動初始化; 開發(fā)者如果擔心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;//設置狀態(tài)欄小圖標
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)
最后熱更新

我的版本不匹配,另外需要的是降低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();
}
};
我有了新思路了。