在Android應(yīng)用的開發(fā)過程中,難免會(huì)有一些潛在的bug毛萌,造成用戶手機(jī)出現(xiàn)Crash或者ANR苟弛,因此收集用戶的崩潰日志是非常必要的。一般大一點(diǎn)的公司會(huì)自己搭建一套Crash日志上傳系統(tǒng)阁将,創(chuàng)業(yè)公司因?yàn)橘Y源有限膏秫,會(huì)更傾向于引入第三方工具進(jìn)行收集。
Crash日志的捕捉是非常容易的做盅,接管默認(rèn)的異常處理器缤削,實(shí)現(xiàn)UncaughtExceptionHandler接口即可,但本文重點(diǎn)不在于分析如何捕捉Crash日志以及上傳吹榴,也不是介紹第三方的一些平臺(tái)亭敢,而是講解如何使用ACRA(Application Crash Reporting on Android),一個(gè)可以自動(dòng)上傳崩潰日志到我們的服務(wù)器上的庫文件图筹。
一帅刀、安裝服務(wù)器
自從ACRA被設(shè)計(jì)出來就一直非常流行,它允許開發(fā)人員開發(fā)自己的服務(wù)器系統(tǒng)婿斥,但我認(rèn)為最好的劝篷,還是ACRA團(tuán)隊(duì)自己開發(fā)的Acralyzer系統(tǒng),Acralyzer系統(tǒng)工作在Apache CouchDB上民宿,因此娇妓,我們只需要安裝CouchDB就可以了。
可以直接從官網(wǎng)(http://couchdb.apache.org)下載:
下載安裝完成后活鹰,可以可以在瀏覽器里面看到couchdb的控制臺(tái)哈恰。
開始配置服務(wù)器端只估,首先,我們需要安裝一個(gè)acro-storage(Acralyzer服務(wù)器的存儲(chǔ)終端)着绷,從右邊的菜單區(qū)域點(diǎn)擊Replicator進(jìn)入蛔钙,然后像下面這樣填好from Remote Database 和 to Local Database:
from Remote Database: http://get.acralyzer.com/distrib-acra-storage
to Local Database: acra-myapp
點(diǎn)擊右邊的Replicate按鈕完成數(shù)據(jù)庫的導(dǎo)入。
接下來荠医,我們以相同的方式安裝Acralyzer吁脱。
from Remote Database: http://get.acralyzer.com/distrib-acralyzer
to Local Database: acralyzer
如果沒有出錯(cuò)的話,我們可以在主頁看到剛導(dǎo)入的數(shù)據(jù)庫:
我們大部分內(nèi)容已經(jīng)完成了彬向,接下來為客戶端創(chuàng)建一個(gè)用戶兼贡,打開瀏覽器進(jìn)入下面的地址:
http://127.0.0.1:5984/acralyzer/_design/acralyzer/index.html
點(diǎn)擊Admin,再切換到Users界面:
根據(jù)提示創(chuàng)建一個(gè)新的賬號(hào)娃胆,創(chuàng)建成功后會(huì)有以下提示:
現(xiàn)在我們已經(jīng)有了賬號(hào)遍希,可以開始在客戶端進(jìn)行設(shè)置。
二里烦、客戶端引入ACRA庫文件
在客戶端設(shè)置ACRA非常的簡(jiǎn)單凿蒜,首先在build.gradle文件里添加如下依賴:
compile 'ch.acra:acra:4.6.1'
自定義Application,添加@ReportCrashes注解:
mport android.app.Application;
import org.acra.ACRA;
import org.acra.annotation.ReportsCrashes;
import org.acra.sender.HttpSender;
/**
* Created by stefanli on 16/3/16.
*/
@ReportsCrashes(
httpMethod = HttpSender.Method.PUT,
reportType = HttpSender.Type.JSON,
formUri = "http://127.0.0.1:5984/acra-myapp/_design/acra-storage/_update/report",
formUriBasicAuthLogin = "stefanli",
formUriBasicAuthPassword = "123456"
)
public class CustomApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ACRA.init(this);
}
}
最后胁黑,在AndroidManifest.xml文件里面添加網(wǎng)絡(luò)訪問權(quán)限即可:
<uses-permission android:name="android.permission.INTERNET"/>
三废封、配置服務(wù)器地址
前面用到的127.0.0.1是默認(rèn)使用的IP地址,在我們正式使用的時(shí)候應(yīng)該替換為服務(wù)器的IP地址别厘。
打開配置文件虱饿,路徑為:/Users/stefanli/Library/Application Support/CouchDB/etc/couchdb/local.ini
修改以下配置:
port = 5984
bind_address = 0.0.0.0
到了這一步拥诡,我們基本的配置都完成了触趴,可以寫一個(gè)簡(jiǎn)單的例子運(yùn)行一下,其他還有一些關(guān)于安全方面的配置渴肉,大家如果感興趣的話可以繼續(xù)完善一下冗懦。
系統(tǒng)的使用是非常簡(jiǎn)單的,其中包含了bug的詳細(xì)信息以及用戶手機(jī)的詳細(xì)信息仇祭,具體的使用大家可以自己摸索一下披蕉。