backport

技術ネタと野球とときどき雑談

Crashlytics for Androidを入れるとbuildが遅くなる?【追記あり】

2016-05-04
development Android , Android Studio , Crashlytics

Crashlyticsがbuildを遅くする問題、Fabric Gradle プラグインのバージョンが上がって解決したようです。

Android Developersの当該ページがいつの間にか更新された上に日本語化されてました。

Fabric Gradle プラグインのバージョンが 1.21.6 以前だと、Crashlytics によってビルド時間が長くなる可能性があります。アプリ開発時のビルド パフォーマンスを改善するには、プラグインを最新版に更新するかデバッグ用のビルド バリアントに対して Crashlytics を無効にします

とは言え、開発中のクラッシュがCrashlyticsに逐一記録されちゃうのも厄介なので、Debugビルド中はOFFにするというのは相変わらず有効な手だとは思います。

(2016-10-15追記)


Crashlytics for Androidはアプリのクラッシュレポートを収集するサービスです。もともとは独立したサービスだったんですが今はTwitter傘下。Fabricというサービスの中のひとつ、という位置付けのようです。

機種や環境に依存したバグが出やすいAndroidではこの手のサービスはかなり重宝します。同じSDKで導入できるAnswersというリアルタイムアクセス分析も便利なので、アプリ作るときはCrashlyticsを入れるのが自分の中のスタンダードになってます。

そんなCrashlyticsですが、Android Studio 2.1リリースのときにあれこれ調べていたらBuilding and Running from Android Studio | Android Developersに気になる記載が。

Using Crashlytics is known to cause slower build times. To improve build performance while developing your app, you can disable Crashlytics for your debug build variant.

「Crashlyticsはbuildを遅くするから、debug buildのときはdisableにしたほうがいいよ」ってことですか。知らなかった。Android Studioのbuildはそもそも遅いのでこんなもんだと思ってましたよ...

手順はBuild Tools — Fabric Android documentationにある通りでOKです。

まずはdebug buildのときにCrashlyticsが無効になるようbuild.gradleに設定を追加。

android {
    buildTypes {
        debug {
          ext.enableCrashlytics = false
          ...

次に、BuildConfig.DEBUGのときはCrashlyticsが無効になるよう設定します。サイトのコードをちょっと書き換えてありますが意味するところは一緒。

この処理はApplication(を継承した独自)クラスでやるのが一般的だと思います。

CrashlyticsCore crashlyticsCore = new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build();
Crashlytics crashlyticsKit = new Crashlytics.Builder().core(crashlyticsCore).build();
Fabric.with(this, crashlyticsKit);

これでdebug build時はCrashlyticsが無効になります。build時間が短縮されて快適なAndroid開発ライフが送れるようになるはず。



コメント欄を表示する