開発者ツールのオプション


開発者ツールのオプション

開発者ツールメニューには、アプリに関する各種情報を得られるオプションが豊富に用意されていて、リアルタイムで指標を確認することもできます。トラブルシューティング・開発・テストなどにぜひ活用してください。

開発者ツールメニューの起動

開発者ツールメニューを起動する方法は複数あります。

開発者ツールメニューのオプションは以下のとおりです。

System X-Ray

System X-Rayはシステムの指標を瞬時に収集し、画面上にオーバーレイとして表示してくれます(オンにすると、常に表示されるようになります)。

System X-Rayのオーバーレイには、以下の情報が含まれます。

  • DIS(ディスプレイ)
  • CPU
  • MEM(メモリ)
  • NET(ネットワーク)

詳細については、System X-Rayのオーバーレイを参照してください。

詳細オプション

Android MediaCodec APIが使用されている場合、[詳細オプション] をオンにするとマルチメディア情報が表示されます。オンにした状態でメディアを再生すると、右側にパネルが追加表示されます([MUL] はマルチメディア(オーディオとビデオ)、[AUD] はオーディオフォーカスを意味します)。

マルチメディアのパネルに表示される情報は、 [AUDIO(オーディオ)] [VIDEO(ビデオ)] [AUDIO FOCUS(オーディオフォーカス)] から成る3つのセクションに分かれています。

AUDIO

プロパティ 説明
Codec 音声コーデック形式を表します。
Hardware Accelerated オーディオ再生においてハードウェアアクセラレーションが有効かどうかを表します。
Input Bitrate オーディオ入力のビットレートを表します。
Secure セキュリティ保護の有無を表します。

VIDEO

プロパティ 説明
Codec ビデオコーデック形式を表します。
Hardware Accelerated ビデオ再生においてハードウェアアクセラレーションが有効かどうかを表します。
Input Bitrate ビデオ入力のビットレートを表します。
Secure ビデオのセキュリティ保護の有無を表します。
Frames Dropped ドロップフレーム数を表します。
Resolution 再生解像度を表します。
Frame Rate 再生フレームレートを表します。
Color Standard

AUDIO FOCUS

プロパティ 説明
Package オーディオ再生のパッケージ名を表します。
Gain オーディオフォーカスのゲインを意味します。
Loss オーディオフォーカスのロスを意味します。
F/U/C フラグ/使用量/コンテンツを表します。
  • フラグ(F): オーディオフォーカスリクエストのフラグ値です。詳細については、AudioManager.java#2445を参照してください。
  • 使用量(U): 使用量の値です。
  • コンテンツ(C): コンテンツの値です。使用量とコンテンツの列挙値については、 AudioAttributes.java#72を参照してください。

オーディオフォーカスの値は、以下のように短縮されます。

  • AUDIOFOCUS_NONE:none
  • AUDIOFOCUS_GAIN:gain
  • AUDIOFOCUS_GAIN_TRANSIENT:g_tr
  • AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:gtmd
  • AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE:gtre
  • AUDIOFOCUS_LOSS:loss
  • AUDIOFOCUS_LOSS_TRANSIENT:l_tr
  • LOSS_TRANSIENT_CAN_DUCK:ltcd
  • UNKNOWN:unkn

スナップショット

スナップショットは、adbコマンドを通じてあらゆる指標情報をリアルタイムに収集するための機能です。以下のコマンドを入力すると、指標情報がコマンドラインに表示されます。

adb shell dumpsys activity service com.amazon.ssm/.OverlayService

このコマンドが機能するのは、System X-Rayが使用中の場合のみです。

出力例を以下に示します。

SERVICE com.amazon.ssm/.OverlayService 3dde6680 pid=10820
  Client:
    [com.amazon.ssm.timestamp]: [2017-02-07 15:11:53]
    [com.amazon.ssm.display.resolution]: [1080]
    [com.amazon.ssm.display.refreshrate]: [60]
    [com.amazon.ssm.display.hdcpversion]: [1.0]
    [com.amazon.ssm.cpu.core0]: [30]
    [com.amazon.ssm.cpu.core1]: [29]
    [com.amazon.ssm.cpu.core2]: [0]
    [com.amazon.ssm.cpu.core3]: [0]
    [com.amazon.ssm.memory.appname]: [tv.twitch.android.viewer]
    [com.amazon.ssm.memory.appmemory]: [56.8MB]
    [com.amazon.ssm.memory.activememory]: [1.3GB]
    [com.amazon.ssm.memory.availablememory]: [231.3MB]
    [com.amazon.ssm.network.rssi]: [-56]
    [com.amazon.ssm.network.systemdownloadspeed]: [2.2Mbps]
    [com.amazon.ssm.network.appdownloadspeed]: [2.1Mbps]

記録&共有

記録&共有機能を使用すると、CPU・メモリ・ネットワーク・マルチメディアに関するリアルタイムの指標情報が履歴データとしてデータベースに保存されます。System X-Rayオーバーレイでも同じ情報がリアルタイムでグラフ表示されますが、記録&共有機能ではコマンドラインにダンプできる履歴として保存することができます。

記録&共有機能を使用するには、まず [開発者ツールメニュー][記録&共有][オン] にします。オンにすると、 [記録の設定] 画面が表示されます。

これらのプロパティで次のことを制御できます。

  • 間隔: 記録を取る間隔を、 2秒・4秒・8秒・16秒・32秒の中から指定します。
  • 持続時間: データをデータベースに保存する期間で、 1時間・2時間・4時間・8時間・16時間の中から指定します。

デフォルト値(間隔2秒、持続時間1時間)では、2秒ごとに統計値が記録され、データベースに1時間保存されます。

メディアを再生して情報を記録したら、以下のコマンドを使用してすべての指標履歴をコマンドラインにダンプすることができます。

adb shell dumpsys activity service com.amazon.ssm/.OverlayService -all

レスポンスには以下の情報が含まれます。

CPU:

  • Timestamp
  • cpu0
  • cpu1
  • cpu2
  • cpu3

メモリ:

  • Timestamp
  • Total_Memory
  • Available_Memory
  • Active_Memory
  • Foreground_App_Memory
  • Foreground_App_PackageName

ネットワーク:

  • Timestamp
  • RSSI
  • Download_Speed
  • Foreground_App_Download_Speed
  • Foreground_App_PackageName

マルチメディア:

  • Timestamp
  • AudioCodec
  • AudioInputBitrate
  • AudioAccelerated
  • AudioSecure
  • VideoCodec
  • VideoInputBitrate
  • VideoAccelerated
  • VideoSecure
  • VideoResolution
  • VideoFramerate
  • VideoFramedropped

コマンドラインの表示例を以下に示します。

 CPU
 Timestamp           cpu0 cpu1 cpu2 cpu3
 2016-10-31 11:40:22 19   16   13   18

 MEMORY
 Timestamp           Total_Memory Available_Memory Active_Memory Foreground_App_Memory Foreground_App_PackageName
 2016-10-31 11:40:23 919.3MB     156.3MB         731.8MB      31.3MB               com.amazon.ssm

 NETWORK
 Timestamp           RSSI Download_Speed Foreground_App_Download_Speed Foreground_App_PackageName
 2016-10-31 11:40:21 -41  14.4 kbps      0 bps                         com.amazon.ssm
 2016-10-31 11:40:23 -41  14.0 kbps      0 bps                         com.amazon.ssm

指標の一部だけを必要な場合は、そのためのオプションをコマンドに追加します。たとえば、メモリとネットワークに関する指標の履歴をコマンドラインにダンプするには、以下のオプションを追加します。

adb shell dumpsys activity service com.amazon.ssm/.OverlayService -memory -network

利用可能なオプションは以下のとおりです。

オプション 説明
空白
(オプションなし)
スナップショットの情報がダンプされます。
-snapshot スナップショットの情報がダンプされます。
-all データベースからすべての情報がダンプされます。
-memory データベースからメモリの情報がダンプされます。
-cpu データベースからCPUの情報がダンプされます。
-network データベースからネットワークの情報がダンプされます。
-multimedia データベースからマルチメディアの情報がダンプされます。

利用可能なオプションを確認する場合は、-helpパラメーターを使用します。

adb shell dumpsys activity service com.amazon.ssm/.OverlayService -help

データベースに保存された指標の記録は、保存期間が過ぎて自動でデータ消去が行われる前に消去することもできます。消去するには、[開発者ツールメニュー][記録&共有] を選択してから、リモコンの [メニュー] ボタンを押します。

セーフゾーン

テレビによっては、画面にオーバースキャンが使用されていることがあります。オーバースキャンとは、表示画面の外側の情報を一部切り捨てて表示することです(モニターの差異に対応するため)。オーバースキャン領域には重要な情報を表示しないでください。

オーバースキャン領域を表示するには、[セーフゾーン][オン] にします。

Fire TV Stick(第2世代)には画面サイズの調整機能がありません。画面表示がテレビ画面にうまく収まらない場合、オーバースキャン領域が正確に表示されないことがあります。

開発者オプション

現在、一部のサードパーティアプリ(NetflixやHBO Goなど)向けに、Amazon Fire TVのホーム画面に専用の行を設け、おすすめコンテンツが表示されるようにしています。おすすめコンテンツの詳細については、おすすめ機能の概要を参照してください。

開発者オプションにある [ダウンロード済みアプリからのおすすめ] をオンにすると、NetlixやHBO Goの行の下にサードパーティアプリから送信されたおすすめコンテンツが表示されるようになります。

この行をオンにすると、ユーザーがインストールした全サードパーティアプリからのおすすめコンテンツが表示されます(NetflixやHBO Goのように、おすすめコンテンツを表示する専用の行を持つアプリは別です)。

ネットワークプロキシ

アプリがリモートサービスまたはウェブサイトと通信を行う場合、生成されるHTTPまたはHTTPSトラフィックを検査できると便利です。これには、アプリが開始するリクエストとアプリが受け取るレスポンス、Cookieとキャッシュ情報などを含むHTTPヘッダーが含まれます。

[ネットワークプロキシ] オプションを使用すると、すべてのネットワークトラフィックが通過するプロキシのホスト名とポートを指定でき、アプリとの間で送受信されるデータを監視できます。プロキシホストとFire TVが同じネットワークに接続されている必要があります。

Charles Proxyを使用したHTTPSおよび暗号化データの操作

機密情報を扱うアプリでは、通常HTTPS接続を利用して、通信傍受や中間者攻撃からデータを保護します。この場合、送信元と送信先間のトラフィックがSSLで暗号化され、機密性が保たれます。[ネットワークプロキシ] オプションで構成したプロキシであっても、データにはアクセスできません。

一部のプロキシはSSL Proxyingをサポートしているため、暗号化されている場合でもネットワークトラフィックを表示できます。Charles Proxyユーティリティは、この機能を提供する有名なユーティリティです。アプリがリモートサーバーと通信しようとすると、Charles Proxyはサーバー証明書をインターセプトし、独自の証明書を動的に生成して署名します。この代替証明書を使用してアプリとの安全な接続を確立し、受信した元のサーバー証明書を使用してリモートサイトに安全に接続します。これにより、アプリとSSLウェブサーバー間の通信をプレーンテキストで表示できます。

Charles ProxyのSSL Proxying機能をアプリで利用するには、Charles Proxyが生成した代替証明書に署名する認証局(Charles CA)を信頼する必要があります。Fire OS 5では、すべてのアプリがデバイスレベルでインストールされた証明書を暗黙的に信頼するため、デバイスに証明書をインストールするだけで十分です。Fire OS 6では、res/xml/network_security_config.xmlで、信頼する証明書をアプリごとに明示的に指定する必要があります。

テストデバイスにインストールされているFire OSのバージョンを確認するには、[設定] > [My Fire TV] > [バージョン情報] > [Fire TV] の順に選択し、[ソフトウェアのバージョン] の詳細を確認します。また、Fire TVデバイスおよび対応するFire OSのバージョンの一覧も確認できます。

以下の手順では、Charles Proxyが既にインストールされて構成済みであることを前提としています。このアプリを初めて使用する場合は、Charlesのドキュメント(英語のみ)を参照してください。

Charles CAをFOS 5で信頼する方法

  1. Charles Proxyアプリ内からPEM形式の証明書ファイルを取得します。メニューで [Help] > [SSL Proxying] > [Save Charles Root Certificate…] の順に選択します。
  2. 証明書ファイルをFire TVデバイスにアップロードします。
     adb push charles-ssl-proxying-certificate.pem /storage/emulated/0/Download
    
  3. アップロードしたファイルの [証明書インストーラー] ダイアログを開きます。
     adb shell am start -a "android.intent.action.VIEW" -d "file:///storage/emulated/0/Download/charles-ssl-proxying-certificate.pem" -t "application/x-x509-ca-cert"
    
  4. わかりやすい名前を指定し、[認証情報の使用][VPNとアプリ] が選択されていることを確認します。

  5. [OK] を選択して証明書をインストールします。Amazonの認証情報を使用して認証するよう求められます。成功すると、画面上に通知が表示されます。

Charles CAをFOS 6で信頼する方法

  1. 上記のFOS 5と同様に、証明書ファイルを取得してインストールします。
  2. Androidプロジェクトのマニフェストを更新し、ネットワークセキュリティ構成ファイルを追加します。

     <?xml version="1.0" encoding="utf-8"?>
     <manifest ... >
         <application android:networkSecurityConfig="@xml/network_security_config"
                      ... >
            ...
         </application>
     </manifest>
    
  3. 次のres/xml/network_security_config.xmlをAndroidプロジェクトに追加して、インストールされているすべての証明書を明示的に信頼します。

     <?xml version="1.0" encoding="utf-8"?>
     <network-security-config>
         <debug-overrides>
             <trust-anchors>
                 <!-- デバッグ可能な場合にのみ以下のCAを信頼します -->
                 <certificates src="user"/>
             </trust-anchors>
         </debug-overrides>
     </network-security-config>
    

または

  1. 上記のFOS 5と同様に証明書ファイルを取得しますが、デバイスにはインストールしません。
  2. 代わりに、証明書ファイルをアプリに直接埋め込みます(Androidプロジェクトのres/rawサブディレクトリに証明書ファイルをコピーします)。必要に応じてファイル名を変更できます(res/raw/my_caなど)。
  3. 上記のように、Androidプロジェクトのマニフェストを更新して、res/xml/network_security_config.xmlなどのネットワークセキュリティ構成ファイルを追加します。ただし、証明書用に選択したファイル名を使用するようにsrc属性を変更します。

     ...
     <!-- デバッグ可能な場合にのみ以下のCAを信頼します -->
     <certificates src="@raw/my_ca"/>
     ...
    

暗号化トラフィックの検査

Charles CA証明書を信頼するようにデバイスを構成すると、デバイスでネットワークプロキシを有効にして、アプリの暗号化されたトラフィックを監視できます。次の手順を記載されている順序で実行する必要があります。

Charles Proxyを使用して暗号化トラフィックを検査するには、次の手順を実行します。

  1. Charles Proxyが実行中であることを確認します。
  2. Charles ProxyアプリでSSL Proxyingを有効にします。メニューで [Proxy] > [SSL Proxy Settings...] の順に選択し、[Add] を選択して監視するホストを指定します。wwwなどのサブドメインは別のものとみなされるため、個別に指定する必要があります。

  3. デバイスで、ネットワークプロキシモードを [手動] に設定し、Charles Proxyが実行されているホスト名(またはIPアドレス)とポート番号を指定します。

  4. アプリを起動します。

これで、Charles ProxyでSSLプロキシを有効にした、アプリとサーバーエンドポイント間のセキュアなネットワークトラフィックを表示できるようになりました。データはCharles Proxyによって暗号化されていない状態で表示され、最終的な送信先に配信するために再暗号化されます。各リクエストとレスポンスのクリアテキストのヘッダーと本文を表示できます。

Charles Proxyを使用してアプリのネットワークトラフィックを検査する方法の詳細については、こちらのドキュメント(英語のみ)を参照してください。

ネットワークアドバイザーの起動

ネットワーク接続の強度やチャネルなどの詳細情報を確認できるネットワーク分析ウィンドウを起動します。問題がある場合、ネットワークアドバイザーによって修正するための推奨が提供されます。

関連リソース

詳細については、以下を参照してください。