1. 程式人生 > >Android中最簡單的整合騰訊Bugly

Android中最簡單的整合騰訊Bugly

專案中使用到整合騰訊的Bugly方便應用的版本管理,崩潰日誌的檢視和熱更新的應用,研究了一下寫出來了:

庫檔案匯入

Bugly支援自動整合和手動整合兩種方式,如果您使用Gradle編譯Apk,我們強烈推薦您使用自動接入方式配置庫檔案。

自動整合(推薦)

Bugly支援JCenter倉庫Maven Central倉庫。為了實現更加靈活的配置,Bugly SDK(2.1.5及以上版本)和NDK(SO庫)目前已經分開成兩個獨立的倉庫:

  • SDK:com.tencent.bugly:crashreport
  • NDK:com.tencent.bugly:nativecrashreport

其中,整合Bugly NDK時,需要同時整合Bugly SDK。

整合SDK分成以下幾步來完成:

 

1:在Module的build.gradle檔案中新增依賴和屬性配置:

dependencies {
    //如果你只需要繼承單個的SDK
    compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本號,也可以指定明確的版本號,例如2.2.0
}

2:同時整合SDK和NDK

在Module的build.gradle(也就是APP下的)檔案中新增依賴和屬性配置:

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.choicelean.superwinner"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 2
        versionName "1.1"
        ndk {
            //設定Bugly支援的SO庫架構,就是下面的架構導致系統自帶的虛擬機器不能使用,可以自己根據需要自動更改
            abiFilters 'armeabi-v7a'//有'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'幾個選項可以選擇
        }
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

dependencies {
      //開始的時候我按照下面的騰訊官方設定,AndroidStudio老是報錯,出問題
    compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本號,也可以指定明確的版本號,例如2.1.9
    compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新Bugly NDK版本號,也可以指定明確的版本號,例如3.0

所以查閱了很多資料才發現可以這樣寫:

//bugly
compile 'com.tencent.bugly:crashreport_upgrade:latest.release'

//其中latest.release指代最新版本號,也可以指定明確的版本號,例如1.2.0
compile 'com.tencent.bugly:nativecrashreport:latest.release'

}

}

3:引數配置

  • 在AndroidManifest.xml中新增許可權:
  • <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_LOGS" />

注:如果您的App需要上傳到google play store,您需要將READ_PHONE_STATE許可權遮蔽掉或者移除,否則可能會被下架。

  • 請避免混淆Bugly,在Proguard混淆檔案中增加以下配置:
    # 9. 騰訊bugly,請避免混淆Bugly,在Proguard混淆檔案中增加以下配置:
    -dontwarn com.tencent.bugly.**
    -keep public class com.tencent.bugly.**{*;}
    -keep class android.support.**{*;}

4:最後一步也是最重要的

獲取APP ID並將以下程式碼複製到專案Application類onCreate()中,Bugly會為自動檢測環境並完成配置:

下面的是我專案中應用的資訊(APPID就是下面的這個):

Beta.autoInit = false;//在mainActivity中檢查
Bugly.init(getApplicationContext(), "你自己的APPID", true(當專案上線時可以設定成false));

為了保證運營資料的準確性,建議不要在非同步執行緒初始化Bugly。

第三個引數為SDK除錯模式開關,除錯模式的行為特性如下:

  • 輸出詳細的Bugly SDK的Log;
  • 每一條Crash都會被立即上報;
  • 自定義日誌將會在Logcat中輸出。

建議在測試階段建議設定成true,釋出時設定為false。

5:測試Bugly是否整合成功:

為了測試我們的Bugly整合是否完成 (我把versionCode改成2,VersionName改成1.2)登陸騰訊Bugly官網:

   當檢視到如下資訊的時候說明我們的應用整合成功了。

6:檢視程式崩潰的資訊:

當我們的應用開發完成之後就可以利用Bugly來檢視使用者使用我們的程式的時候的崩潰的情況,比如我的應用中

出現一個OOM記憶體溢位的時候就會上傳到網上,我們不用對接使用者資訊就可以看到我們應用崩潰的詳細情況如下:

這樣我們就能根據相應的日誌資訊來檢查我們程式中出現的BUG進而快速修改。