Android appクラッシュログの収集とアップロード

3259 ワード

ソースコードの取得はgithub:https://github.com/DrJia/AndroidLogCollector
すでに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.自分のプロジェクトに自分のアプリケーションを書き換え、oncreateに追加
    LogCollector.init(getApplicationContext(), UPLOAD_URL, params);

PS:自分のアプリケーションを書き換えるマニフェストに登録する
パラメータ:
1.Context
2.String UPLOAD_URL、アップロードアドレスurl、httpとhttps方式、post方法をサポートします.
3.HttpParameters paramsは、postに他のパラメータをアップロードするために独自に定義されたクラスです.
説明:
クラッシュが発生すると、ログは/data/data/{your package name}/files/フォルダに保存されます.
ログには1つのファイルのみがあり、複数のデータ・ログが保存されます.
ログファイルのアップロードに成功した後に自分で自発的に削除することができて、アップロードに成功しないで削除しません
ログフォーマットは、自分のニーズに合わせてソースコードで変更できます.
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
        }
    }

ログのアップロード方法:
まずアプリケーションでinitを実行する必要があります.
次に、次のようなコードを任意の場所に追加します.
    LogCollector.upload(boolean isWifiOnly);

パラメータ:
1.boolean isWifiOnly; trueはwifiの場合のみ送信、falseはネットワークの場合は送信(トラフィックとwifiを含む)を表します.
サービス、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/フォルダの下に保存されているクラッシュログを表示できる
このフォルダの下のログは自分で自発的に削除することはできません.