Androidモバイル アプリケーションでは、メイン UIスレッドが 5 秒以上ブロックされると、 アプリケーション応答なし (ANR) エラーが 発生します。これらのエラーはユーザー エクスペリエンスを著しく低下させますが、次のようないくつかの要因によって発生する可能性があります。
- メインスレッドでネットワーク操作を実行する
- UI の更新を妨げる複雑な計算を実行する
- 共有資源をめぐる争い
- 重いI/O操作の実行
By 監視 ANR エラーは、アプリの安定性とユーザーの全体的なエクスペリエンスに貴重なインサイトを提供します。
ANRエラーがNew Relicに報告される仕組み
デフォルトでは、Android エージェントは ANR エラーをMobileApplicationExit
イベントとして報告します。これは、Android のApplicationExitInfo
APIを利用してモニターし、アプリ終了のさまざまな原因を報告します。 エージェントは、次のアプリリリースで ApplicationExitInfo
APIを読み取り、履歴内のアプリ終了ごとに MobileApplicationExit
イベントをNew Relicに非同期的に送信します。
New Relic と Google Play Console 間の ANR の不一致を理解する
New Relic と Google Play Console の間で ANR の数とレートに違いが生じる場合があります。 これはデータ収集方法の違いによるものです。
Android バージョン カバレッジ:
- New Relic は、Android 11 以降を実行しているデバイスからの ANR に重点を置いています。
- Google Play Console は、すべての Android バージョンにわたって ANR をキャプチャします。
デバイスとアプリのスコープ:
- New Relic は、アプリのソースに関係なく、New Relic エージェントがインストールされているデバイスからレポートします。
- Google Play Console は、Play ストアからアプリをダウンロードした認定デバイスからのレポートのみを表示します。
詳細については、 Google Play のドキュメントをご覧ください。
New RelicでANRを表示する
ANRsページは、開発チームが ANR の問題を特定、分析、解決し、より安定したモバイル エクスペリエンスを提供するのに役立ちます。
このページでは次のことが可能です。
全体的なエラー傾向を評価する:セッションおよびユーザー別に ANR 率チャートを確認して、ANR 発生時の異常またはパターンを見つけます。
- セッション別の ANR 率:時間の経過に伴ってエラーが発生したセッションの割合をアプリのバージョン別に表示されます。平均 ANR セッション パーセンテージは左上隅に表示されます。
- ユーザー別の ANR 率:ユニーク ユーザーの総数に対する、期間中に ANR を経験したユニーク ユーザーの割合が表示されます。 ユニークユーザーは通常、
deviceUuid
によって識別されます。
より詳細な分析のためのグループ化とフィルター:デバイス タイプ、OS バージョン、アプリのバージョン、または標準およびカスタム アトリビュートなどのプロパティによって ANR の発生をグループ化またはフィルターします。
パターンを特定する: ANR 発生テーブルを調べて、ANR エラーメッセージ、発生日、頻度、アプリのバージョン、影響を受けるユーザーの数など、ANR の説明に関連する傾向を見つけます。
個々の ANR グループを調査する:類似した ANR の特定のグループをドリルダウンして、次のような詳細情報を表示します。
- ANRに至るまでのユーザーアクションを示すイベントトレイル
- ユーザージャーニー情報
- 代表的なスタックトレース
- 関連属性とメタデータ
スタックトレースをローカル マシンにエクスポートし、 Androidシンボリケーション ツールを使用して難読化を解除し、より詳細な分析を行うことができます。
ANRsページを表示するには:
- one.newrelic.com > All capabilitiesに移動します。
- Mobileをクリックします。
- Android アプリを選択します。
- 左側のペインで、 ANRをクリックします。
ANR詳細ビュー
ANR の詳細ビューには、次のような ANR 発生の包括的な概要が表示されます。
- 発生チャート:最初の検出以降、選択した期間における特定の ANR の頻度を表示します。複数の発生が記録されている場合は、各インスタンスを移動できます。
- ANR タイプの内訳:この ANR が最も頻繁に発生するデバイス モデルまたは OS バージョンのパターンを識別します。
- ANR 属性プロファイル:アプリの状態 (フォアグラウンド/バックグラウンド)、デバイスの特性、この ANR エラー グループと相関する地理的パターンなど、この特定の ANR エラー グループのさまざまなディメンションにわたるパターンと分布を識別します。

ANR の詳細ビューにアクセスするには、 ANRsページで ANR の発生を選択します。
ANRスタックトレース
ANR エラーが発生すると、 Androidスタックトレースをキャプチャします。 スタックトレースは、エラー発生時のコードの実行パスのスナップショットです。 New Relic 、 Android ApplicationExitInfo#getTraceInputStream
APIメソッドを使用してこれらのスタックトレースを取得します。 スタックトレースが利用可能な場合、 New Relicそれを ANR 発生の詳細の下に表示します。
可用性:
- ANR のスタックトレース データにはNew Relic Androidエージェント バージョン 7.6.2 が必要です またはそれ以降。
ApplicationExitInfo#getTraceInputStream
メソッドがnull
を返す場合、ANR オカレンスにはスタックトレースは含まれません。
難読化解除:
New Relic現在、プラットフォーム内で ANR スタックトレースを自動的に難読化解除しません。 この機能のサポートは将来のリリースで予定されています。それまでの間、難読化された ANR スタックトレースをNew Relicからダウンロードし、Proguard/R8 のndk-stack
またはretrace
ユーティリティなどのオフライン ツールを使用して、スタックトレースを手動でシンボライズできます。
ANR監視を無効にする
重要
サーバーサイド構成は常にローカルエージェント設定よりも優先されます。 同時にアクティブなデバイスが 100,000 台未満のモバイル アプリの場合、エンドユーザーのデバイスに変更を適用するまでに最大 10 分かかることがあります。 アクティブデバイスが 100,000 台を超えるアプリの場合、数時間かかることがあります。
ANR監視を無効にする必要がある場合:
- New Relic で、モバイル アプリに移動します。
- 左側のペインのSettingsの下で、 Applicationをクリックします。
- Application Not Responding (ANR) [アプリケーション応答なし (ANR) を]オフに切り替えます。
- クリック 保存.
