Androidで始めるCrashlytic(Fabric.io)
調べるに当たったキッカケ
- GoogleMap v1 を使っているプロジェクトで
- クラッシュレポートが欲しかったから
の [Google Analytics といえば] あたりに記載した話で
現時点だと
classpath 'com.google.gms:google-services:3.0.0'
じゃないと Developer Consoleのクラッシュレポートに通知が来ない?
最新の導入ページだと、Firebaseのページにリダイレクトされて
Firebase ClashReport の情報が DeveloperConsoleのクラッシュレポート に反映されている挙動?
みたいな状態になっている為。
最近下位互換のステっぷりがG様激しいので、データ集計の観点から言うとどうなんだろうか?
とか思ってしまう。。 csvとかにエクスポートして別途集計作業とかやはりしているのかな・・
の話を見ると、GAの方に送って集計みたいな話もあるようですが・・
今一G様的にはどうしたいんでしょうね・・・
公式ドキュメント
Fabric — Fabric for Android documentation
導入手順
Crashlytics for Android - Fabric Install
を参照。
- crashlyticsを導入すると
- crashlytics
- Beta
- Answers
が入る。別途導入する必要はない
注意点
下記の記述にしないとdebugBuildで動かない
final Fabric fabric = new Fabric.Builder(this) .kits(new Crashlytics()) .debuggable(BuildConfig.DEBUG) .build(); Fabric.with(fabric);
不便に感じた所
- “Fabric for Android Studio” or “Fabric for IntelliJ” 入れること前提の作り
- APIキーの生成が
- アカウントログイン
- ローカルでcode install(snipet?)上で、重複しないキーを生成
- 実行時にサーバーに登録
なので、Fabric Pluginがうまく認識できないと何もできなくなる*1
な話もあるけど、2−2の操作ができないはず。
Fabric.ioのWeb管理コンソールからID等が生成できないのはすごく悩んだ。。。
- Pluginのアカウント情報の fabric.properties がプロジェクト直下に1個のため、debug/releaseで切り替えられない
- 運用的に本番アカウントと、テストアカウントは別にしたいはずかと思うんですが・・・
現状だとAndroidManifest.xmlを release/debugで分けるしかないよな。。というのが所感
未確認機能
NDK ClashReport
build.gradle
apply plugin: 'io.fabric' crashlytics { enableNdk true androidNdkOut 'obj' androidNdkLibsOut 'libs' baseManifestPath 'AndroidManifest.xml' }
- コマンド実行
./gradlew crashlyticsUploadSymbolsDebug ./gradlew crashlyticsUploadSymbolsRelease
等で
その他の機能
Answers
- 結構リアルタイムに表示されている
Charlesあたりで見ると結構頻繁に通信しているかなと
標準で用意されている Event Types
- 専用の参照ブロック画面が用意されているイメージ
下記だと
- Purchaseというブロック画面
Answers.getInstance().logPurchase(new PurchaseEvent() .putItemPrice(BigDecimal.valueOf(13.50)) .putCurrency(Currency.getInstance("USD")) .putItemName("Answers Shirt") .putItemType("Apparel") .putItemId("sku-350") .putSuccess(true));
カスタムイベントを作った場合は、新規ブロック画面が作られる
Beta
- upload自体は、コマンドラインで一発なのですぐ出来る
gradle assembleRelease crashlyticsUploadDistributionDebug gradle assembleRelease crashlyticsUploadDistributionRelease
リリースページにそれなりの文言を設定したい場合は、下記のページを参照して記述を追加
uploadしたリンクは毎回生成し直さないとダメ
task等でファイル名を変更しているとuploadはできない
テストする端末で、invateメールを受信*5
- リンクをクリック
- Betaアプリが入っていなければDownload
- Betaアプリインストール後、ログインを行う
- 一番最新のものが表示されているはずだが、違う場合はメールリンクから起動し直す
Betaアプリが入っていればアプリ起動ランチャー画面へ
Betaを使うには、
- minsdk-9となっているが単にBetaアプリがminsdk9でつくられているからだけなので、
- ビルドやアップロード自体は minsdk8とかでも可能
その他の追加機能
Kit | Min minSdkVersion |
---|---|
Answers | 8 |
Beta | 9 |
Crashlytics | 8 |
Digits | 14 |
MoPub | 9 |
Twitter Kit | 14 |
MoPub
試した所感
試しにMoPubを導入してみようとお思ったのですが、依存aarが4つぐらい入るので*6
overrideLibraryの記述が255文字余裕で超えるので、api9以上でのみ動かすみたいなコードは書けない
<uses-sdk tools:overrideLibrary="XXX">
- 指定のminsdk以上なら使えるみたいな eclipse-ADTでは書けていたコードが無理になった
というのが現状かなと。
まあ、広告IDを取得する関係で
com.google.android.gms:play-services-ads:XXX
の依存が必須だからminsdk9になる流れもありますが・・・