1. 程式人生 > >Android開發之app崩潰日誌收集以及上傳

Android開發之app崩潰日誌收集以及上傳

已經做成sdk的形式,原始碼已公開,原始碼看不懂的請自行google。

如果想定製適應自己app的sdk請自行fork。

AndroidLogCollector

android app崩潰日誌收集sdk 1.0

作者:賈博士

崩潰日誌收集方法:

1.LogCollector是lib包,在需要新增崩潰日誌sdk的工程中匯入此包。

2.匯入lib後,在自己的工程的AndroidManifest.xml檔案中加入許可權:

        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"
/>

3.在自己的工程中重寫自己的application,在oncreate中加入

    LogCollector.init(getApplicationContext(), UPLOAD_URL, params);

PS:重寫自己的application記得在Manifest註冊

引數:

1.Context

2.String UPLOAD_URL ,上傳地址url,支援http和https方式,post方法。

3.HttpParameters params ,自定義的類,用於post上傳其他引數。

說明:

發生崩潰後,日誌會儲存在 /data/data/{your package name}/files/ 目錄下

日誌只有一個檔案,多條資料日誌儲存

日誌檔案上傳成功後會自動刪除,上傳不成功則不刪除

日誌格式可以根據自己的需求在原始碼中改動

http的post傳的資料也可自行修改

參考程式碼:

    public class MyApplication extends Application {
//post method , upload logfile url,replace your site . support http or https
private static final String UPLOAD_URL = "http://xxxxxxxx";

@Override
public void onCreate() {
super.onCreate();

//upload logfile , post params.
HttpParameters params = new HttpParameters();
params.add("key1", "value1");
params.add("key2", "value2");
params.add("key3", "value3");
//.......
//replace your key and value;

boolean isDebug = true;
//set debug mode , you can see debug log , and also you can get logfile in sdcard;
LogCollector.setDebugMode(isDebug);
LogCollector.init(getApplicationContext(), UPLOAD_URL, params);//params can be null
}
    }

需要先在application中執行init,

然後在任何位置新增如下程式碼:

    LogCollector.upload(boolean isWifiOnly);

引數:

1.boolean isWifiOnly; true代表只在wifi情況下發送,false代表有網的情況下就傳送(包括流量和wifi)

您可以在service,activity等位置的合適時機觸發,不會卡介面也不會影響效能。

參考程式碼:

    private void uploadLogFile(){
    boolean isWifiOnly = true;//only wifi mode can upload
    LogCollector.upload(isWifiOnly);//upload at the right time
    }

在init之前呼叫

    LogCollector.setDebugMode(boolean isDebug);

說明:

1.開啟除錯後可以看到堆疊的log資訊

2.同時可以在sd卡下的Android/data/{your package name}/Log/ 目錄下可以檢視儲存的崩潰log日誌

該目錄下的日誌不會自動刪除,請及時清空,避免佔用空間