1. 程式人生 > >實現bugly僅在release下上傳錯誤日誌和mapping檔案

實現bugly僅在release下上傳錯誤日誌和mapping檔案

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); }