fabric.io(Crashlytics)でクラッシュレポート

2015-10-19T17:44:05+09:00 Android

fabric.io を使ってCrashlyticsでクラッシュレポートを送信するメモ

fabric.ioの流れ

  1. Android Studioにfabricプラグインを導入
    1. AndroidManifest.xmlにapiKeyが直書きされるのでgithubとかにうpする場合は注意
    2. project/app/fabric.propertiesにapiKeyをAndroidManifest.xmlからコピペしてAndroidManifest.xml側は削除しておく(無論、githubとかにfabric.propertiesは載せないように)
    3. android.app.Applicationを継承したクラスでfabricによるCrashlyticsでクラッシュトラッキングする方向な設定コードを組み込む
    4. project/build.gradle及びapp/build.gradleに依存性などの定義を修正する

  2. fabricを導入したアプリを端末へインストール・起動
  3. 起動後に fabric.io にアクセスするとダッシュボードへアクセス可能になる

っていう流れで導入する。1に関しては fabric.io にアクセスした際にプラグインがダウンロード出来るのでそれをAndroid Studioでロードしておく。書いてある通りAndroidManifest.xmlにapiKeyが入ってるけどこれはfabric.propertiesで定義する。

project/build.gradleを修正

buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        // 追加
        classpath 'io.fabric.tools:gradle:1.+'
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'http://oss.sonatype.org/content/repositories/snapshots'
            // 追加
            url 'https://maven.fabric.io/public'
        }
    }
}

project/app/build.gradleを修正

※長いので一部だけ

apply plugin: "io.fabric"

dependencies {
    // 追加
    compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
        transitive = true;
    }
}

を追加

App.java

package kinjouj.app.oretter;

import android.app.Application;
import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;

public class App extends Application {
    @Override
    public void onCreate() {
        Fabric.with(this, new Crashlytics());
    }
}

これで上記のセクション1は終わり。あとはこれをビルドしてインストール後起動するとfabric.ioからダッシュボードへアクセスする出来るようになる

んで適当にアプリをバグらせて確認すると

というようなクラッシュエラーをfabricダッシュボードのCrashlyticsから確認する事が出来るようになる

余談

proguardを有効にしている場合は

-keep class com.crashlytics.** { *; }
-keep class com.crashlytics.android.**

の記述が必要。詳しくは https://docs.fabric.io/android/crashlytics/dex-and-proguard.html

デバッグビルド時にはCrashlyticsを有効にしない場合

詳しくは https://docs.fabric.io/android/crashlytics/build-tools.html#disabling-crashlytics-for-debug-builds

Robolectric3でandroid.os.Handler RxJavaのlift