Upload
cch-robo
View
1.032
Download
3
Embed Size (px)
Citation preview
Firabase Crash Reporting を使ってみました1
Firabase Crash Reporting を使ってみました
Google I/O Extended 報告会 2016 in 関西 LT 2016-06-11
Firabase Crash Reporting を使ってみました2
Firabase Crash Reporting を使ってみました
自己紹介
・名前 robo (兼高理恵)
・お仕事 Java 技術者 要件定義に設計から実装まで
・好きなもの モバイル端末
Firabase Crash Reporting を使ってみました3
今年のI/Oでは
今年のI/Oでは、 音声や画像のbigdataを機械学習させた成果として、 Google Assistant と Google Home や Allo、 Google Cloud Vision API が、
Google I/O 2016 - Keynote より Google Play より
Firabase Crash Reporting を使ってみました4
今年のI/Oでは
VR への意気込みとして Google VR-Daydream と、 NのVR …最適化モードがお披露目されたことと思いますが
Google VR - Daydream より
Firabase Crash Reporting を使ってみました5
今年のI/Oでは
私の中では、Firebaseへの関心が Google I/O 2016 前と後で、大きく変わりました。
IO以前は、firebase.com でしたが… IO以後は、firebase.google.com に
Firabase Crash Reporting を使ってみました6
Firebase が、モバイル支援プラットフォームに昇格
Firebaseの位置づけは、モバイルアプリの品質や利用/収益改善を支援する
統合プラットフォームに昇格しました。
・Google アカウントがあれば使用できます。・オンラインを介した15の機能が、基本無料で使えます。・Google Playに登録していないアプリでも利用可能です。・build.gradleへの追加設定のみで使える機能もあります。
Google Developers Japan Blog
Firebase の紹介動画(第 1 弾) 2016年5月30日http://googledevjp.blogspot.jp/2016/05/firebase-1.html
Firebase の紹介動画(第 2 弾) 2016年6月02日http://googledevjp.blogspot.jp/2016/06/firebase-2.html
新しいFirebaseの全体概要や各機能の紹介は、1本 2〜4分かつ日本語字幕付きの
お手軽ビデオで確認できますよ。
Firabase Crash Reporting を使ってみました7
Firebase 紹介ビデオの概要
Introducing Firebase モバイル アプリを支援する統合プラットフォーム機能全般紹介
Introducing Firebase Analytics アプリの利用状況を解析するために必要なデータを収集します。
Introducing Firebase Cloud Messaging アプリ・ユーザーへのメッセージ送信を容易にします。
Introducing Firebase Remote Config アプリをユーザごとにカスタマイズさせる動的外部変更可能な設定データ。
Introducinf Firebase Dynamic Links ウェブページやアプリの任意の場所や画面に移動できるディープリンク。
Introducing Firebase Notifications ユーザーへのお知らせの送信や管理を容易にします。
Introducing Firebase Invite ユーザー同士でのコンテンツや紹介コードの送信を容易にします。
Introducing Firebase Test Lab for Android アプリのテストが様々な実機端末で簡単にできるようになります。
Introducing Firebase Crash Reporting アプリのクラッシュ情報を収集し、コンソールに表示します。
Introducing Firebase and AdMob by Google AdMobと Firebase との連携で、アプリからの広告収入を生み出します。
Introducing Firebase Storage アプリから共有できるオンライン・ファイル保存ストレージ。
Introducing Firebase Realtime Database リアルタイムのデータ同期やオフライン時のサポートを行うデータベース。
Introducing Firebase Hosting フロントエンドウェブアプリ向けの静的ウェブホスティングプロバイダ。
Introducing Firebase and Google AdWords AdWords と Firebase との連携で、アプリの効果的な宣伝を行います。
Introducing Firebase Authentication Google や Twitter 等のアカウントと連携した認証を簡単にします。
Introducing Firebase App Indexing 再エンゲージを高める、Google 検索と連携したアプリへのディープリンク。
Firabase Crash Reporting を使ってみました8
Firebaseをアプリで利用するための基本手順
あああ
【基本手順の参照元】 Firebase Docs > GUIDE > Get Started > Android Add Firebase to your Android Project https://firebase.google.com/docs/android/setup
Gradle Dependency Line Service
com.google.firebase:firebase-core:9.0.2 Analytics
com.google.firebase:firebase-database:9.0.2 Realtime Database
com.google.firebase:firebase-storage:9.0.2 Storage
com.google.firebase:firebase-crash:9.0.2 Crash Reporting
com.google.firebase:firebase-auth:9.0.2 Authentication
com.google.firebase:firebase-messaging:9.0.2 Cloud Messaging / Notifications
com.google.firebase:firebase-config:9.0.2 Remote Config
com.google.firebase:firebase-invites:9.0.2 Invites / Dynamic Links
com.google.firebase:firebase-ads:9.0.2 AdMob
com.google.android.gms:play-services-appindexing:9.0.2 App Indexing
Firebase機能のライブラリ一覧
Firabase Crash Reporting を使ってみました9
Firebaseをアプリで利用するための基本手順
1.Firebase サービスを利用するアプリのAndroid Studio プロジェクト名とパッケージ名を確認します。
2.Firebase コンソールの「新規プロジェクトの作成」からプロジェクト名を新規登録します。
3.Firebase コンソールの「Android アプリにFirebaseを追加」から、先のプロジェクトにパッケージ名(と必要あればデバッグキーのSHA-1)を設定します。
4.Firebase コンソールからダウンロードした google-services.json 設定ファイルをAndroid Studio プロジェクトのアプリモジュール(app/)の直下にコピーします。
5.Android Studio プロジェクトの build.gradle の dependencies にFirebase必須プラグインの classpath 'com.google.gms:google-services:3.0.0' を追加します。
6.Android Studio プロジェクトの app/build.gradle で、dependenciesに利用するFirabase機能のライブラリ(前ページ参照)を追加(*1)して、ファイル末尾で Firebase必須プラグインの適用(*2)を行います。(*1) compile 'com.google.firebase:firebase-core:9.0.2' (Analicticsの場合)(*2) apply plugin:'com.google.gms.google-services'
7.Android Studio プロジェクトで Sync( )を行います。
8.必要があれば、アプリのソースに 導入したFirebase機能 独自の実装を追加します。
・Android 2.3(Gingerbread)以上で、Google Play services 9.0.2 以上の端末が対象です。・Android Studio は、1.5以上かつ Google Play Service SDK が利用できることが必要です。・Android Studio 2.2 より前の Instant Run には、互換性がないので無効にしてください。
Firabase Crash Reporting を使ってみました10
Firebaseをアプリで利用するための基本手順
【補足】 Firebase を使ってみるプロジェクトが手元にない場合は、 Firabase のサンプルプロジェクトを使うと良いでしょう。
ただしその場合は、 「利用するプロジェクトのパッケージ名が他の人と被らないように AndroidManifest.xml で固有のものに変更してね!」 とのこと。
firebase/quickstart-android https://github.com/firebase/quickstart-android Firebase 機能ごとのサンプルプロジェクトが、各機能毎のプロジェクトディレクトリに配置されています。
Firabase Crash Reporting を使ってみました11
Firebaseをアプリで利用するための基本手順
機能毎にプロジェクトが分かれています。
機能毎にプロジェクトが分かれています。
Github の firebase/quickstart-android リポジトリをローカルに clone しましましたら、確認したい機能のサンプル・プロジェクトをAndroid Studio にインポートします。
【補足】 サンプル・プロジェクトを 利用する際の注意事項
Firabase Crash Reporting を使ってみました12
Firebaseをアプリで利用するための基本手順
サンプル・プロジェクトをインポートしたら、元々設定されていたパッケージ名から、固有のパッケージ名に変更してください。
サンプル・プロジェクトをインポートしたら、元々設定されていたapplicationId名から、固有のapplicationId名に変更してください。
AndroidManifest.xml app/build.gradle
【補足】 サンプル・プロジェクトを 利用する際の注意事項
サンプル・プロジェクトをインポートしたら、固有のパッケージ名のディレクトリ構成に変更してください。 新規パッケージを追加して、元クラスを移動すると楽です。
Firabase Crash Reporting を使ってみました13
Firebaseをアプリで利用するための基本手順
文字だけの説明では、イメージが伝わりにくいと思います。
次ページから、具体的な例としてFirebase Crash Reporting 機能を利用できるようにするための手順を
まとめました。
Firabase Crash Reporting を使ってみました14
Firebaseをアプリで利用するための基本手順
【具体例】 (Android Studio での下準備)
Github の firebase/quickstart-android リポジトリをローカルに clone します。
クローン後に、ローカル・リポジトリの crash ディレクトリ(Crash Reporting 機能のサンプル・プロジェクト)をAndroid Studio にインポートします。
Android Studio に、crash プロジェクトをインポートしたら2ページ前の手順を参考に、パッケージ名の変更を行ってください。
Firabase Crash Reporting を使ってみました15
Firebaseをアプリで利用するための基本手順
【具体例】 (Firebase コンソールでの操作)
予め Google アカウントで、Chrome にログイン済であれば、Console リンクをクリックするとFirebase コンソールが開きます。
firebase サイト firebase.google.com を開きます。
新規プロジェクトを作成をクリックしてFirebase 機能を利用する新規プロジェクトを作成します。
Firabase Crash Reporting を使ってみました16
Firebaseをアプリで利用するための基本手順
新規プロジェクト用の適当なプロジェクト名を入力します。
クリックしてプロジェクトを 作成します。
新規プロジェクトを作成のクリックでプロジェクトの作成ダイアログが開きます。
Firabase Crash Reporting を使ってみました17
Firebaseをアプリで利用するための基本手順
プロジェクトが作成され 作成した新規プロジェクト用の コンソール画面が開きます。
新規作成したプロジェクト が選択されています。
新規作成したFirebaseプロジェクトに任意のAndroid アプリを登録して、アプリからFirabaseの機能を使えるようクリックします。
Firabase Crash Reporting を使ってみました18
Firebaseをアプリで利用するための基本手順
AndroidアプリにFirebaseを追加のクリックでAndroidアプリにFirebaseを追加ダイアログが開きます。
クリックしてFirebaseプロジェクトにアプリを追加します。
Firebaseの機能を使いたいアプリのパッケージ名を指定します。
必要なければ入力の必要は、ありません。詳細は、次ページ参照
Firabase Crash Reporting を使ってみました19
Firebaseをアプリで利用するための基本手順
デバッグ用の署名証明書 SHA-1(オプション)は、 Firebase Invites か Firebase Dynamic Links を使う場合や、 アプリをリリースする際に Oauth client ID や API key を使う場合や、 エラーレポートをアプリの共同開発者版のものと区別したい場合に必要となります。
Firebse > Support > Support (Recent changes & updates | FAQ)Frequency Asked Questions > Projects and the Firebase consoleDo I need to provide a SHA-1 when adding an Android app? より
Firebase Invites か Firebase Dynamic Links を使う場合、SHA-1を指定してくださいとあります。https://firebase.google.com/support/faq/
Firebase > Support > Support Guides >Launch Checklist > Firebase Launch Checklist より
OAuth client ID や API key を使う場合、アプリをリリースする際には、リリース版 SHA-1 証明書キーを登録してくださいとあります。https://firebase.google.com/support/guides/launch-checklist
Firabase Crash Reporting を使ってみました20
Firebaseをアプリで利用するための基本手順
アプリを追加のクリックで、この後でダウンロードされるFirebase の機能を使えるようにする google-services.json 設定ファイルをFirebase 機能を使いたいアプリの Android Studio プロジェクトの app モジュール下にコピー追加するよう促すダイアログに切り替わります。
クリックして、続行します。
Firabase Crash Reporting を使ってみました21
Firebaseをアプリで利用するための基本手順
続行のクリックで、Firebase 機能を使いたいアプリの Android Studio プロジェクトの ルートと、 app モジュール下にある build.gradle への追加設定を促すダイアログに切り替わります。
クリックして、設定を終了します。
Android Studio ルートの build.gralde 設定buildscript { dependencies { // Firebase を使えるようにするプラグイン設定を追加 classpath 'com.google.gms:google-services:3.0.0'; }}
Android Studio app/下の build.gralde 設定dependencies{ // (補足)利用するFirebase機能のライブラリを追加 compile 'com.google.firebase:firebase-crash:9.0.2'}設定記述の末尾に、プラグイン適用指定を追加apply plugin: 'com.google.gms.google-services'
設定が反映されるにはSync( )が必要です。
Firabase Crash Reporting を使ってみました22
Firebaseをアプリで利用するための基本手順
終了のクリックで、Android アプリで Firebase の機能を使えるようにするgoogle-services.json 設定ファイルがダウンロードされますので、Firebase 機能を使うアプリのASプロジェクトに、前2ページ分の設定操作を行ってください。
ダウンロードしたjson 設定ファイルのコピー先
以下の設定後に、ASのツールバーからSync( )を行って設定を反映します。
ASプロジェクト・ルートのbuild.gradle への追加設定
ダイアログの説明にない追加設定ASプロジェクト・appモジュール下のbuild.gradle への利用するFirebase機能のライブラリをインポートする追加設定
ASプロジェクト・appモジュール下のbuild.gradle 末尾への追加設定
Firabase Crash Reporting を使ってみました23
Firebase Crash Reporting の
特徴と注意点
Firabase Crash Reporting を使ってみました24
Crash Reporting の特徴 (1)
● 現段階ではベータ版● 基本無料で利用可能● Googleアカウントがあれば利用可能● Google Play に登録/公開していないアプリでも利用可能● Firebase コンソールのプロジェクトへのアプリ・パッケージ名登録と、
アプリ側のルート下と、appモジュール下の build.gradle 設定とapp 直下への json 設定ファイル追加のみで利用開始可能
Firabase Crash Reporting を使ってみました25
Crash Reporting の特徴 (2)
● キャッチされなかった例外のレポートのみであれば、現状コードへの追加実装も不要
● エラーレポートには、発生日時や端末情報に例外種別とスタックトレースも記録可能
● 捕捉されたエラーは、20分程度でエラーレポートに反映され&コンソールで確認可能
● 例外や発生箇所や端末やAPI レベルなどで、エラーレポートのフィルタリングも可能
● エラーレポートへの任意例外の記録やカスタムログの追加も、対応実装の追加で可能
Firabase Crash Reporting を使ってみました26
Crash Reporting の特徴 (3)
【留意事項】● End user privacy
Firebase Crush Reporting は、クラッシュしたアプリ・ユーザのメールアドレスや電話番号など、 個人を特定できる情報を収集していません。
Googleさんとしては、 カスタムログに個人特定情報入れると、自分たちに送ることになるので入れないでね!とのこと。
【以上の参照元】Firebase > Docs > GUIDE > Crash Reporting > Introduction
Firebase Crash Reporting
https://firebase.google.com/docs/crash/
Firabase Crash Reporting を使ってみました27
Crash Reporting の特徴詳細
● Firebase Crash Reporting を使うには、app モジュールの build.gradle の dependencies に、Crash Report のライブラリをインポートする設定を追加します。
compile 'com.google.firebase:firebase-crash:9.0.2'
● 自動的にキャッチされない例外を捕捉してエラーレポートを記録しますが、それだけでなく、下記のように、明示的にエラーレポートを記録させることもできます。
FirebaseCrash.report( new Exception("My first Android non-fatal error"));
● Firebase カスタムログ出力を使って、エラーレポートに独自情報(カスタムログ出力内容)の 追加もできます。
FirebaseCrash.log("Activity created");
Firabase Crash Reporting を使ってみました28
Crash Reporting の注意事項
● ProGurad を使うと、エラーレポートのスタックトレースも難読化されます。難読化を解除したい場合は、マッピングファイルのアップロードが必要です。 (マッピングファイルの出力先は、下記のフォーマット)<project root>/<module name>/build/outputs/mapping/<build type>/<appname>-proguard-mapping.txt
例:app/build/outputs/mapping/debug/app-proguard-mapping.txtアップロードについては、スライドP.38を参照ください。
● Crash Reporting と Analictics で報告されるエラー総数は、 現在一致しません。
Firabase Crash Reporting を使ってみました29
Crash Reporting 既知の問題 (1)
● クラッシュレポートは、バックプロセスで実行されます。
● このためバックプロセス分の Application オブジェクトも生成され、ライフサイクルなどのシステム・コールバック・メソッドもまた実行されることになります。
● Application オブジェクトのシステム・コールバックで、プロセスをまたいで共有されるデータ(*1)の更新を行う場合、マルチプロセス対応をしていないと思わぬ上書きが発生し、同期問題が発生するのです。onCreate()でDBの初期化などをしないようにしてください。
(*1)Shared Preferences や Database など
Firabase Crash Reporting を使ってみました30
Crash Reporting 既知の問題 (2)
● 同期問題は、プロセスをまたいでデータを共有するサードパーティ製のライブラリにもあてはまります。これらのライブラリを使う際には、マルチプロセス対応の有無を確認してから利用や対応を行ってください。
● プロセスをまたいで共有されるデータは、Content Providerを介して管理することが推奨されています。
【以上の参照元】Firebase > Docs > GUIDE > Crash Reporting > Android > Report Crashes
Report Crashes
https://firebase.google.com/docs/crash/android
Firabase Crash Reporting を使ってみました31
Firebase Crash Reporting を
使ってみる
Firabase Crash Reporting を使ってみました32
Firebase Crash Reporting をアプリから利用する
Firebase Crash Reporting は、 基本手順を踏めば任意のアプリに組み込めますが、 今回は、サンプルの crash プロジェクトを使ってみました。
組み込み手順については、 「Firebaseをアプリで利用するための基本手順」の具体例を参照ください。
アプリを起動すると表示される画面
チェックなしでクリックすると、NullPointer例外が発生してアプリがクラッシュします。
チェックありでクリックすると、NullPointer例外がキャッチされ、何もなかったように振る舞います。
Firabase Crash Reporting を使ってみました33
Firebase Crash Reporting をアプリから利用する
Catch Crashチェックあり
Catch Crashチェックなし
アプリの実装 (抜粋)
キャッチされない例外を発生させて放置
捕捉した例外をカスタムログに出力し、エラーレポートに記録
Firabase Crash Reporting を使ってみました34
Firebase Crash Reporting でエラーレポートを記録させる
Firebase Crash Reporting の働きを確認するため、
1.チェックなしでボタンをクリックしてアプリをクラッシュさせる。 2.チェックありでボタンをクリックして例外を記録させる。
…を行った後、 Firebaseコンソールにログインして、 エラーレポートを確認します。
Firabase Crash Reporting を使ってみました35
Firebase Crash Reporting のエラーレポート確認手順 (1)
予め Google アカウントで、Chrome にログイン済であれば、Console リンクをクリックするとFirebase コンソールが開きます。
firebase サイト firebase.google.com を開きます。
作成済みのFirebase を使用するプロジェクトをクリックして選択します。
Firabase Crash Reporting を使ってみました36
Firebase Crash Reporting のエラーレポート確認手順 (2)
前ページでクリックされた、Firebase を使用するプロジェクトに 切り替わります。
Firebase Crash Reporting のエラーレポートを確認するためCrash項目をクリックします。
右ペインがCrash Reporting に切り替わります。
Firabase Crash Reporting を使ってみました37
Firebase Crash Reporting のエラーレポート確認 (1)はじめは、チェックなしのクリックによるキャッチされない NulPointer例外がレポートされています。
スタックトレース詳細を確認するには、例外発生元のリンクをクリックします。キャッチされない
例外のため「致命的」とレポートされる。
Firabase Crash Reporting を使ってみました38
Firebase Crash Reporting のエラーレポート確認 (2)
はじめの、キャッチされないNullPointer例外のスタックトレースが表示されています。
ProGuard を使う場合は、スタックトレース内容も難読化されます。難読化を解除するには、マッピングファイルのアップロードが必要です。
前ページのエラー発生元リンクのクリックにより、スタックトレース表示に切り替わっています。
Firabase Crash Reporting を使ってみました39
Firebase Crash Reporting のエラーレポート確認 (3)
スタックトレース内容だけでなく、端末のAndroidバージョンや空きメモリ状況などもレポートしてくれます。
Firabase Crash Reporting を使ってみました40
Firebase Crash Reporting のエラーレポート確認 (4)
続いて、チェックを入れてキャッチされた例外のスタックトレースを表示しています。
遅れてレポートされた、キャッチされて実装側で任意レポートとカスタムログが出力されたNullPointer例外のスタックトレースが表示されています。
キャッチされた例外なので、「非致命的」とレポートされています。
Firabase Crash Reporting を使ってみました41
Firebase Crash Reporting のエラーレポート確認 (5)
フィルタリング条件も、アプリのバージョン番号や端末のAPIバージョンに、端末種類や日時などが用意されています。
Firabase Crash Reporting を使ってみました42
Firebase Crash Reporting の雑感
…以上のように、 Firebase Crash Reporting は、 開発者側の設定を最小限にしようとしていることと、
エラーレポートでは、 細かなフィルタリング条件や、エラー端末情報が補足され、 単なるエラーチェックだけでなく、エラー分析に役立つよう 試みられており、
基本無償でありながら、モバイル・アプリの 品質や利用/収益改善の支援を目指していることは、 確かなように思えます。
Firabase Crash Reporting を使ってみました43
ご清聴、ありがとうございました。
イメージなどを詰め込みすぎ、資料が小さく読みづらかったことを
お詫びいたします。