1. 程式人生 > >Android Firebase接入(三)--Firebase 崩潰日誌報告(Crashlytics)

Android Firebase接入(三)--Firebase 崩潰日誌報告(Crashlytics)

Firebase崩潰日誌報告可以自動記錄應用內崩潰資訊,只需簡單的幾步,就可以將Firebase Crashlytics新增到安卓工程中,然後Firebase Crashlytics就會自動的收集應用內崩潰資訊,包括錯誤型別,程式碼定位等等,非常的方便實用。

一、配置Android應用並下載google-service.json檔案:

Firebase控制檯新建專案(需要使用Google賬戶登入),配置好Android應用後下載google-service.json檔案,將google-service.json檔案新增到專案的app目錄下。

(1)新增專案時填寫專案名稱、專案id使用預設的就可以、選擇國家、底部的兩個勾選項要麼都選,要麼都不選,表示是否和Google分享你的app分析資料,最後點選建立專案即可。

(2)Firebase的專案不止是為Android打造的,可以在專案中新增Android應用,IOS應用,網頁應用。那麼我們先要為這個專案新增一個Android應用:

選擇“將Firebase新增到您的安卓應用”,然後填寫app包名,app別名可以選填,除錯簽名證書SHA1,除錯簽名證書SHA1可以通過命令列獲取:

Mac環境:

keytool -exportcert -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore

Windows環境:

keytool -exportcert -list -v \
-alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

輸入命令列後需要輸入金鑰庫口令,預設的金鑰庫口令是android

獲取正式簽名證書SHA1的命令列:

keytool -exportcert -list -v \
-alias <your-key-name> -keystore <path-to-production-keystore>

在<your-key-name>填入金鑰名,<path-to-production-keystore>填入金鑰路徑,然後輸入金鑰庫口令即可獲取SHA1。

4.新增好Android應用後,下載google-service.json檔案,新增到專案的app目錄下。

二、整合Crashlytics,然後Firebase自動列印程式錯誤資訊

專案級 build.gradle(<專案>/build.gradle):新增classpath和maven

buildscript {
    repositories {
        ...
        maven { url 'https://maven.google.com'  }
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
        classpath 'com.google.gms:google-services:4.0.1'
        classpath 'io.fabric.tools:gradle:1.25.1'
    }
}

allprojects {
    repositories {
        ...
        maven { url 'https://maven.google.com' }
    }
}

...

應用級 build.gradle(<專案>/<應用模組>/build.gradle):新增implementation和apply plugin

...
apply plugin: 'io.fabric'
android{
    ...
}
dependencies {
    ...
    implementation 'com.google.firebase:firebase-core:16.0.3'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
}
apply plugin: 'com.google.gms.google-services'

將 SDK 新增到您的應用後,在Firebase控制檯的Crashlytics中進行配置,Crashlytics 就會立即自動開始監聽並收集崩潰報告。

Crashlytics配置步驟:1.點選設定Crashlytics,選擇“是,此應用是第一次安裝 Crashlytics(它沒有安裝過此 SDK 的任何版本)

​​​​2.點選“轉至Crashlytics文件”,此時會開啟一個新標籤頁,即Crashlytics文件,把新標籤頁直接關掉即可,這裡就會到第三步

3.第三步是“構建並執行您的應用,我們將偵聽您的應用與我們的伺服器通訊的請求。”,也就是讓我們執行剛才已新增上Crashlytics的專案,Firebase會自動監聽我們的app,如果我們的app已經安裝上Crashlytics,這裡就會跳轉到Crashlytics崩潰報告頁面。

經過博主親測,最好在程式碼里加上手動呼叫崩潰日誌,幫助Firebase更好的監聽到我們的app,在MainActivity中新增

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Crashlytics.log(Log.DEBUG, TAG, "Crash");
    }
}

然後在電腦上連上手機,執行app,Firebase就會自動監聽我們的app是否安裝了Crashlytics,監聽到之後會看到以下頁面:

點選轉至Crashlytics資訊中心,就會看到崩潰分析頁面了:

點選崩潰資訊可以看到崩潰詳情:

三、手動列印日誌到Crashlytics

Crashlytics.log(Log.VERBOSE, TAG, "Crash");
Crashlytics.log(Log.DEBUG, TAG, "Crash");
Crashlytics.log(Log.INFO, TAG, "Crash");
Crashlytics.log(Log.WARN, TAG, "Crash");
Crashlytics.log(Log.INFO, TAG, "Crash");
Crashlytics.log(Log.ASSERT, TAG, "Crash");
Crashlytics.logException(new Throwable());

呼叫Crashlytics.log(int priority, String tag, String msg)方法即可,第一個引數是日誌級別,和Android Studio的Log日誌級別是一樣的,第二個引數是Tag標籤,第三個引數是列印的內容。Crashlytics還提供了一個列印錯誤日誌的方法logException(Throwable throwable),傳入一個錯誤資訊即可。

手動列印日誌很少用到,一般使用第二節中的 整合Crashlytics,然後Firebase自動列印程式錯誤資訊 的功能。