Network Inspector のタイムラインにはネットワーク アクティビティがリアルタイムで表示され、送受信されたデータが示されます。Network Inspector を使用すれば、アプリがデータを転送した方法とタイミングを調べ、基盤となるコードを適切に最適化できます。
Network Inspector を開く手順は次のとおりです。
- Android Studio のナビゲーション バーで [View] > [Tool Windows] > [App Inspection] を選択します。App Inspection ウィンドウが自動でアプリプロセスに接続したら、タブの中から [Network Inspector] を選択します。
- App Inspection ウィンドウが自動でアプリプロセスを接続しない場合は、手動でアプリプロセスを選択する必要があります。
- App Inspection ウィンドウで、検査するデバイスとアプリプロセスを選択します。
Network Inspector の概要
[Network Inspector] ウィンドウの上部には、イベントのタイムラインが表示されます。クリックしてドラッグし、タイムラインの一部を選択してトラフィックを調査できます。
詳細ペインのタイミング グラフを使用して、パフォーマンスの問題が発生している可能性のある場所を特定できます。黄色のセクションの先頭が、送信されるリクエストの最初のバイトに対応します。青色のセクションの先頭が、受信されるレスポンスの最初のバイトに対応します。青色のセクションの末尾は、受信されるレスポンスの最後のバイトに対応します。
選択した一部のタイムラインにおけるネットワーク アクティビティについて詳しく確認する場合は、タイムラインの下にあるペインで、次のいずれかのタブを選択します。
- Connection View: アプリの CPU スレッド全体での、タイムライン選択部分で送受信されたファイルをリストします。リクエストごとにサイズ、種類、ステータス、送信期間を調べることができます。列の見出しのいずれかをクリックすると、リストを並べ替えることができます。また、タイムラインの選択部分に関する詳細な分析情報が表示され、各ファイルが送受信されたタイミングが表示されます。
Thread View: アプリの各 CPU スレッドのネットワーク アクティビティを表示します。図 2 に示すように、このビューでは各ネットワーク リクエストがどのスレッドによるものなのかを調査できます。
Rules View: ルールを使用すると、さまざまなステータス コード、ヘッダー、本文を含むレスポンスを検出したときのアプリの動作をテストできます。新しいルールを作成するときには、新しいルールに名前を付け、[Origin] サブセクションにインターセプトするレスポンスの生成元に関する情報を含めます。[Response] サブセクションでは、レスポンスを変更する場所と方法を指定できます。たとえば、特定のステータス コードを含むレスポンスに実行するルールを設定し、そのステータス コードを変更できます。[Header rules] サブセクションと [Body rules] サブセクションでは、レスポンス ヘッダーまたは本文を追加または変更するサブルールを作成します。ルールは記載された順序で適用されます。ルールの横にある [Active] チェックボックスをオンにして、有効にするルール、無効にするルールを選択します。
[Connection View] または [Thread View] でリクエスト名をクリックすると、送受信されたデータに関する詳細情報を調査できます。タブをクリックすると、レスポンス ヘッダーとボディ、リクエスト ヘッダーとボディ、コールスタックを表示できます。
[Response] タブと [Request] タブで、[View Parsed] をクリックすると書式付きテキストが表示され、[View Source] をクリックすると未加工テキストが表示されます。
HttpsURLConnection
のネットワーク リクエストの表示だけではなく、Network Inspector では OkHttp
もサポートされます。一部のサードパーティ ネットワーク ライブラリ(Retrofit など)では、OkHttp
を内部的に使用するため、Network Inspector でネットワーク アクティビティを検査できます。「
Now In Android サンプルアプリ
ネットワーク オペレーションに OkHttp
を使用するため、
できます。
HttpsURLConnection
API を使用している場合、次のサンプルに示すように setRequestProperty
メソッドを使用してコードに含めた [Request] タブにのみヘッダーが表示されます。
val url = URL(MY_URL_EN) val urlConnection: HttpsURLConnection = url.openConnection() as HttpsURLConnection ... // Sets acceptable encodings in the request header. urlConnection.setRequestProperty("Accept-Encoding", "identity")
URL url = new URL(MY_URL_EN); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); //... // Sets acceptable encodings in the request header. urlConnection.setRequestProperty("Accept-Encoding", "identity");
ネットワーク接続のトラブルシューティング
Network Inspector がトラフィックの値を検出したもののサポート対象のネットワーク リクエストを特定できない場合は、次のエラー メッセージが表示されます。
**Network Inspector Data Unavailable:** There is no information for the
network traffic you've selected.
現在のところ、Network Inspector はネットワーク接続用に HttpsURLConnection
ライブラリと OkHttp
ライブラリのみをサポートしています。アプリが別のネットワーク接続ライブラリを使用している場合、Network Inspector でネットワーク アクティビティを表示できないことがあります。このエラー メッセージを受信したもののアプリで HttpsURLConnection
または OkHttp
を使用している場合は、バグを報告するか、Issue Tracker を検索してこの問題に関連する既存のレポートにフィードバックを追加してください。また、これらのリソースを使用して追加のライブラリのサポートをリクエストすることもできます。