bugly是什么?百度百科上對bugly的介紹 總結下來是:騰訊的開放給開發者的一種平台服務,主要用於android和ios平台上的移動應用的crash和卡頓檢測和快速定位以及提供解決方案。是免費服務。
而用過的人都知道,除了crash檢測外,bugly還提供應用內升級和熱修復等功能。
一切以官方文檔為准:https://bugly.qq.com/docs/
Q:文檔介紹得很詳細了,為什么要寫這篇文章?
A:這篇文章是對文檔的部分內容的歸納,因而更簡練。某些操作直接已步驟形式列出,沒有多余的解釋。僅供記錄和之后學習參考使用,畢竟看文檔是件麻煩事,記錄一下還能提升認識。
-----link start-----
bugly不是一個SDK,而是多個sdk的集合。下面講述Android平台上異常上報SDK、應用升級SDk的配置使用。
一 異常上報SDK集成
異常上報(bugly:crashreport)SDK:2.6.6 更新日志
1.導入到開發環境
AS的開發環境眾所周知,有兩種方式可以導入包和庫。
dependencies { compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本號,也可以指定明確的版本號,例如2.2.0 }
或者到這里下載jar包:https://bugly.qq.com/docs/release-notes/release-android-bugly/
需要的權限清單
<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" />
混淆配置
-dontwarn com.tencent.bugly.** -keep public class com.tencent.bugly.**{*;}
從混淆配置可看到,bugly要求keep其包下所有代碼,說明bugly已做過混淆
2.代碼配置
第一步肯定是要調用類似於某個類的靜態初始化方法的。
CrashReport.initCrashReport(getApplicationContext(), "注冊時申請的APPID", false);//第三個參數為調試模式開關,開發調試時可為true
初始化代碼建議放在Application中。文檔建議:為了保證運營數據的准確性,建議不要在異步線程初始化Bugly。
調試模式特點:
- 輸出詳細的Bugly SDK的Log;
- 每一條Crash都會被立即上報;
- 自定義日志將會在Logcat中輸出。
另外,初始化方法還有一個重載的。
CrashReport.initCrashReport(getApplicationContext());
如果用這個方法,那么像APPID,調試開關等配置就需要放在其他地方了。
<application <!-- 配置APP ID --> <meta-data android:name="BUGLY_APPID" android:value="<APP_ID>" /> <!-- 配置APP版本號 --> <meta-data android:name="BUGLY_APP_VERSION" android:value="<APP_Version>" /> <!-- 配置APP渠道號 --> <meta-data android:name="BUGLY_APP_CHANNEL" android:value="<APP_Channel>" /> <!-- 配置Bugly調試模式(true或者false)--> <meta-data android:name="BUGLY_ENABLE_DEBUG" android:value="<isDebug>" /> </application>
3.MultiDex注意事項
4.上報進程控制
大概的意思是,如果在Application中直接調用bugly的初始化代碼,之后如果有多進程,則每個進程都會上報一些相同的report,為了避免網絡資源浪費,最好控制上報的進程僅一個,即主進程。
代碼看文檔吧
到這兒,基本操作就是這些了。
CrashReport.testJavaCrash();
這行代碼會制造一個運行時異常,可以作為測試用。
二 應用升級SDK
----logout---