實現bugly僅在release下上傳錯誤日誌和mapping檔案
阿新 • • 發佈:2019-01-23
bugly在錯誤跟蹤上功不可沒,但是如果在工程中沒合理設定也會帶來一些令人頭疼的問題。比如把除錯模式下的錯誤也上傳到bugly,除錯時上傳mapping檔案影響編譯速度。這裡我提供一種方法解決以上問題:
一. 讓bugly僅在打release包時上傳mapping檔案
以下程式碼均寫在app的build.gradle檔案中:
1.定義判斷buildType的方法和全域性變數isRelease。因為isRelease有可能在其他地方也會用到,這裡用ext定義一個全域性變數。
ext { // 定義當前gradle檔案的全域性變數
isRelease = checkRelease()
}
// 通過task判斷是否為release,比判斷Variant好
def checkRelease() {
def runTasks = gradle.startParameter.taskNames
for (String task : runTasks) {
// 我這裡根據task為"assemble"和非"Debug"認定為release
if (task.contains("assemble") && !task.contains("Debug")) {
return true
}
}
return false
}
2.設定bugly的excute屬性為isRelease
bugly {
appId = '*****'
appKey = '*****'
debug = true // 開啟debug模式可以觀察到日誌
execute = isRelease // 僅在release包中使用bugly
}
注意,這裡關閉bugly外掛,不影響bugly的錯誤日誌上傳功能,隻影響上傳mapping檔案。
二、讓bugly僅在release下上傳錯誤日誌
這個更簡單了,在application中一句程式碼完事,我這裡是集成了應用升級的:
// 這是application的onCreate()方法
@Override
public void onCreate() {
if (BuildConfig.DEBUG) {
...
} else {// 僅release版本才檢測更新和上傳錯誤日誌
initBugly();
}
// 可以寫在super.onCreate()之前,挺好
super.onCreate();
...
}
private void initBugly() {
Beta.initDelay = 5 * 1000;// 應用更新檢測在5秒之後,不會影響之前的錯誤日誌上傳
Bugly.init(this, "*****", false);
}