Crashlyticsにエラーレポートを送りアプリの品質改善に役立てる2019-02-23by@wapa5powFlutterアプリとしてエラーは大きく2種類あります。Crashlyticsで収集します。Crashlyticsで収集したかったのですが、Crashlyticsのほうは、iOSで同じエラーでも以下のように別々のエラーとして扱われてしまったのでSentryとCrashlyticsを使っています。同じように扱える場合は、Crashlyticsで統一したいですね(ここ解決する方法しっていたら教えてください)。Sentryの導入まずあらかじめSentryでアカウントを作っておきます。Projectという概念があり、Organizationが複数のProjectをもっているという感じです。developmentなど)に応じて複数Projectを作るといいと思います。organizationから作成でき、Projectは、OrganizationページのSettings=>Projectから作成できます。serviceで公式にエラーレポートの導入の仕方を説明しているので、この通りに導入すれば大丈夫です。今回は、2.2.0のバージョンを入れました。ドキュメントではrunZonedを使って、runAppをラップしています。Zoneは、runApp実行中に起きたハンドリングできなかったエラーをハンドルして、Sentryなどにエラー情報を送ることができます。try-catchとは違って、runAppを終了せずにそのまま実行できます。FlutterError('err');とかいてエラーを起こさせます。するとSentryで以下のようなIssueが生成されます。ドキュメントのままでは、エラーログとしの情報が足りないので以下の情報をつけて送れるようにします。OSの種類とバージョンアプリのバージョンproductionやdevelopmentなどの環境名ユーザの情報SentryはSentryClientを初期化するときにEventというイベントを送るときに付属させる情報を定義できるので以下のように上記の情報をつけます。(${packageInfo.buildNumber})';ようにして取得しています。deviceInfoは、device_infoから以下のように定義して_deviceName()から取得しています。deviceInfo;}ちなみに、device_infoはAndroid/iOS各以下のように端末の情報がとれます。device_infoのAndroidの端末情報device_infoのiOSの端末情報ユーザの情報に関しては以下のようにSentryで定義されているUserをuserContextに代入します。123);このように設定してからSentryにエラーを送ると、以下のように各種付属した情報がSentryにでます。これで端末情報などでしぼりこめるので、エラーの原因解明がはかどります。実際のアプリで実装したコードなので、ソースコードの値とは若干ことなります)これでFlutter/Dart側で起きたエラーはSentryでエラーレポートがみれるようになりました。Crashlyticsの導入ネイティブ(Android/iOS)のコードがクラッシュしたときのエラーレポートはCrashlyticsで取得することにします。Crashlyticsを設定します。FirebaseのコンソールのQualityにあるCrashlyticsを選んでから以下を選んでおきます。Flutterのパッケージとして、flutter_crashlyticsを使用します。Crashlyticsを使った場合を説明します。pubspec.yamlのdependenciesに以下を追加します。今回、kiwi-bop/flutter_crashlyticsをforkして、このコミットだけを行ったものをパッケージとして使ってます。foundというエラーがでたので、Issueに記載されている修正をしました。f0b5f56d1bcaae4e352991437a29ebc65ae6ef50パッケージを導入したら、Crashlyticsにエラーレポートを送れるように以下のように設定します。Scriptを追加する必要があるので以下のように左上の+ボタンから追加します。Crashlyticsの場合はいりません。Flutter側main.dartに以下のように記載してCrashlyticsを初期化します。環境を設定している部分は必要なら記載してください。setInfoでSentryのタグみたいに独自情報を付属できます。'production';終わったらネイティブ連携など適当な部分でクラッシュさせてログがでているか確かめます。Crashlyticsを使いFlutterアプリのクラッシュしたときやハンドルしていない例外がでたときにエラーレポートを送ることができるようになりました。アプリのバージョンやOSなど細かい情報も入れられるので、ユーザからお問い合わせがあったときも対応しやすくなりアプリの品質が高められますのでまだエラーレポートを入れていないFlutterアプリがある場合はぜひためしてみてください。blogHomeAboutTool。