本來我們App是接入的友盟統計的SDK,但是确實是不太好用,上個版本iOS先接入了Ugly作為嘗試,發現與需求相符比友盟略好,是以這個版本Android要引入Bugly統計
因為熱更新功能很早之前就接了tinker,是以就沒再依賴這裡面的
步驟就是按文檔走,這裡簡單記錄一下
- 內建SDK 在Module的build.gradle檔案中添加依賴和屬性配置:
dependencies { compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如我接入時最新版本是3.0.0 }
- 當然也可能有使用NDK的需求,內建NDK這一步不是必要的
android { defaultConfig { ndk { // 設定支援的SO庫架構 abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a' } } } dependencies { compile 'com.tencent.bugly:crashreport:latest.release' //這是必須的 compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新Bugly NDK版本号,也可以指定明确的版本号,例如3.0 }
- 在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" />
-
混淆
在Proguard混淆檔案中增加以下配置:
引入過程已經結束了,接下來是如何使用-dontwarn com.tencent.bugly.** -keep public class com.tencent.bugly.**{*;}
-
初始化
擷取APP ID并将以下代碼複制到項目Application類onCreate()中,Bugly會為自動檢測環境并完成配置:
注意:CrashReport.initCrashReport(getApplicationContext(), "注冊時申請的APPID", false);
為了保證營運資料的準确性,建議不要在異步線程初始化Bugly。 第三個參數為SDK調試模式開關,調試模式的行為特性如下: 輸出詳細的Bugly SDK的Log; 每一條Crash都會被立即上報; 自定義日志将會在Logcat中輸出。 建議在測試階段建議設定成true,釋出時設定為false。
實際上到這裡就已經結束了。當然這個初始化還能增加一個參數,參數可以攜帶管道号、包名、版本号、設定延遲等,這個參數是UserStrategy類作為Bugly的初始化擴充,在這裡您可以修改本次初始化Bugly資料的版本、管道及部分初始化行為。通過以下方式傳入:
6.
```
UserStrategy strategy = new UserStrategy(appContext);
//...在這裡設定strategy的屬性,在bugly初始化時傳入
strategy.setAppChannel("myChannel"); //設定管道
strategy.setAppVersion("1.0.1"); //App的版本
strategy.setAppPackageName("com.tencent.xx"); //App的包名
//strategy.setAppReportDelay(20000); //改為20s
//...
CrashReport.initCrashReport(appContext, APPID, true, strategy);
```
到這裡就把基本功能接入完成了,具體細節和其他進階設定參考官方文檔:Bugly官方文檔