The Android Developer Challenge is back! Submit your idea before December 2.

デバイスの開発者向けオプションを設定する

Android デバイスの設定アプリにある [開発者向けオプション] 画面では、アプリ パフォーマンスのプロファイリングやデバッグに役立つシステム動作の設定を行うことができます。たとえば、USB デバッグの有効化、バグレポートの取得、タップの視覚表示、画面更新時のスクリーン点滅、2D グラフィック レンダリング時の GPU の使用など、さまざまな設定を行うことができます。

開発者向けオプションとデバッグを有効化する

図 1: 開発者向けオプション

Android 4.1 以前の場合、[開発者向けオプション] 画面はデフォルトで表示されています。Android 4.2 以降の場合は、以下の手順で、この画面を有効化する必要があります。

  1. 設定アプリを開きます。
  2. [システム] を選択します(Android 8.0 以降のみ)。
  3. 一番下までスクロールして [端末情報] を選択します。
  4. 一番下までスクロールして [ビルド番号] を 7 回タップします。
  5. 前の画面に戻り、下部に [開発者向けオプション] が表示されているか確認します。

[開発者向けオプション] 画面の上部で、このオプションの有効 / 無効を切り替えることができます(図 1)。ここでは、有効にしておきましょう。無効にすると、デバイスと開発コンピュータ間の通信を必要としない設定を除いて、大半のオプションが無効になります。

次に、少し下にスクロールして、[USB デバッグ] を有効にします。これにより、USB 接続したデバイスを Android Studio や SDK ツールが認識し、デバッガなどのツールを利用できるようになります。

以下では、この画面で利用可能な他のオプションについて説明します。

全般オプション

Android 8.0 以降の場合、[クイック設定開発者用タイル] をタップすると、選択した開発者向けオプションをクイック設定パネルに追加できます。まず、利用可能なタイルを 1 つまたは複数選択して(図 2)、クイック設定パネルを開き、鉛筆アイコンをタップして、編集モードに移行します。次に、開発者用タイルをタイルパネルからクイック設定パネルにドラッグし、再び鉛筆アイコンをタップして、編集モードを終了します。

図 2: クイック設定パネルに追加する

他の全般オプションは以下のとおりです。

  • メモリ: (Android 8.0 以降)平均的なメモリ使用状況や、メモリ パフォーマンス、使用可能なメモリ合計量、平均メモリ使用量、使用可能なメモリ残量、アプリによるメモリ使用量など、メモリに関する統計情報が表示されます。
  • バグレポートを取得: 現在のデバイスログ ファイルのコピーを取得して、共有できます。バグレポートが準備できると通知が送信され、その通知をタップするとレポートを共有できます。
  • システム UI デモモード: 通知やバッテリー残量警告などを表示しない汎用のプリセット通知バーを表示することで、不要なものを含まないスクリーンショットを簡単に撮影できます。 [デモモードを有効にする] を有効にすると、adb デモモード コマンドを使用して、ステータスバーの外観を変更することができます。あるいは、[デモモードを表示] を使用すると、通知を非表示にして、プリセットのステータスバーを表示することができます。
  • PC バックアップ パスワード: バックアップ パスワードを設定しておくと、パスワードの保護下にあるデバイスアプリやデータを、adb コマンドを使用してバックアップしたり、復元したりすることができます。
  • スリープモードにしない: 充電中は常にディスプレイをオンにしておくことができます。
  • Bluetooth HCI スヌープログを有効にする: /sdcard/btsnoop_hci.log ファイルに保存されているすべての Bluetooth HCI パケットを取得します。取得したパケットを Wireshark などのプログラムで解析して、その情報をトラブルシューティングに役立てることができます。

デバッグ

図 3: デバッグ オプションを有効にする

デバッグ オプションを使用すると、オンデバイス デバッグを設定したり、デバイスと開発コンピュータ間の通信を確立したりすることができます。

[USB デバッグ] を有効にすると(図 3)、Android Debug Bridge(adb)を通じて Android デバイスと開発コンピュータ間の通信が可能になります。[デバッガを待機] オプションは、[デバッグアプリを選択] を使用してデバッグ対象アプリを選択するまでは無効になっています。[デバッガを待機] を有効にすると、選択したアプリはデバッガがアタッチされるのを待ってから起動するようになります。

他のデバッグ オプションは以下のとおりです。

  • ログデータをデバイス上に永続的に保存: デバイス上に永続的に保存するログメッセージの種類を選択できます。オプションには、オフ、すべて、無線情報以外すべて、カーネルのみ、があります。
  • 仮の現在地情報アプリを選択: このオプションを使用してデバイスの GPS 位置情報を仮のものに偽装することで、他の場所でもアプリが同じように機能するかテストすることができます。このオプションを使用するには、GPS 位置情報を仮のものに偽装できるアプリをダウンロードしてインストールしておく必要があります。
  • 図 4: ビュー属性

  • 表示属性検査を有効にする: View インスタンスの mAttributes メンバー変数にビュー属性情報を保存して、それをデバッグに利用することができます。この属性情報は、図 4 のように、Layout Inspector ユーザー インターフェースを通じてアクセスすることができます(このオプションを有効にしていない場合、[Attributes] は利用できません)。
  • GPU デバッグレイヤの有効化: Android 9(API レベル 28)以降を搭載しているデバイスで利用可能です。このオプションを有効にすると、ローカル デバイス ストレージから Vulkan 検証レイヤを読み込むことができます。詳細については、Android の Vulkan 検証レイヤをご覧ください。

ネットワーク

図 5: USB 設定の選択

ネットワーク オプションでは、Wi-Fi 設定や DHCP 設定を指定できます。

[USB 設定の選択] をタップすると、パソコンでデバイスを認識する方法を指定できます。図 5 のように、充電のみ、ファイル転送(MTP)、画像転送(PTP)、パソコン上でのモバイル インターネットの使用(RNDIS)、オーディオ ファイルや MIDI ファイルの転送、というオプションの中から選択できます。

[Bluetooth AVRCP バージョン] をタップすると、デバイスがアクセス権限を持つすべての Bluetooth AV 機器を制御する際に使用するプロファイル バージョンを選択できます。また、デバイス上のオーディオ再生に関して詳細な調整を行うには、以下のオプションをタップして設定を行います。

  • Bluetooth オーディオ コーデック: 次のいずれかのコーデックを選択して、デバイスの音質(コーデック)を調整します。
    • SBC: ヘッドフォンやスピーカーなど、Bluetooth オーディオ出力機器にデータを転送します。
    • AAC: 同じビットレートの MP3 に比べて有線接続デバイスからの音質が良くなります。
    • aptX: スマートフォンや、スピーカー、サウンドバー、ヘッドフォン、タブレットにおいて、高音質でクリアなワイヤレス サウンドを実現します。
    • aptX HD: Bluetooth デバイスに向けて高音質ストリーミングを行います。
    • LDAC: ワイヤレス接続で高音質の音楽を聴くことができます。
    • オプションのコーデックの有効化 / オプションのコーデックの無効化: 追加のコーデック実装をインストールしている場合は、そのオプションの有効 / 無効を切り替えることができます。
  • Bluetooth オーディオ サンプルレート: オーディオ コーデックのサンプルレートを選択して、1 秒あたりのオーディオ サンプル数を調整できます。サンプルレートが高いほど必要なリソースが増えます。
  • サンプルあたりの Bluetooth オーディオ ビット: 各オーディオ サンプルにおける情報のビット数を設定します。ビットレートが高いほど音質は良くなりますが、サンプル ファイルのサイズが大きくなります。
  • Bluetooth オーディオ チャンネル モード: モノラルかステレオを選択します。
  • Bluetooth オーディオ LDAC コーデック: サウンドを最適化することで、音質を改善し、音質と接続品質のバランスを調整し、接続品質を改善し、アダプティブ ビットレートを使用して音質と接続品質のバランスを調整することができます。

他の Wi-Fi 設定と DHCP 設定は以下のとおりです。

  • ワイヤレス ディスプレイ認証: 高度な設定を有効にして、Wi-Fi Alliance Wi-Fi Display Specification で規定されている仕様に準拠したワイヤレス ディスプレイ認証に対応します。この認証は Android 4.4(API レベル 19)以降が対象です。
  • Wi-Fi 詳細ログの有効化: 受信信号強度(RSSI)に応じて、接続している各ワイヤレス ネットワーク(SSID)の Wi-Fi ログレベルをアップします。ログの詳細については、logcat を使用してログを書き込み、表示するをご覧ください。
  • Wi-Fi を強制的にモバイル接続に切り替える: 信号が弱い場合に、データ接続をモバイル ネットワークにハンドオーバーして、Wi-Fi を効率的に使用します。

入力

図 6: ポインタの位置

[タップを表示] を有効にすると、画面上のタップを視覚的に表示できます。指やタッチペンで画面に触れると円形記号が表示され、指やタッチペンを画面上で移動すると、円形記号の位置も一緒に移動します。デバイス上で動画を録画しているときは、タップがポインタのように機能します。

[ポインタの位置] を有効にすると、十字線とともにデバイス上にポインタ(タップ)の位置が表示されます。画面の上部には、十字線の座標をトラッキングするバーが表示されます(図 6)。ポインタを移動すると、バー内の座標が十字線の位置をトラッキングし、ポインタの軌道が画面上に描画されます。

描画

図 7: ユーザー インターフェース構成

描画オプションを使用すると、アプリのユーザー インターフェースに関するビジュアル キューが表示され、その動作を確認することができます。

[レイアウト境界を表示] を有効にすると、図 7 のように、アプリのクリップ境界線やマージンなど、デバイス上のユーザー インターフェース構成が表示されます。

他の描画オプションは以下のとおりです。

  • RTL レイアウト方向を使用: 画面レイアウト方向を強制的に右から左(RTL)または左から右(デフォルト)に指定します。
  • ウィンドウ アニメスケール: ウィンドウ アニメーションの再生速度を設定して、さまざまなスピードでのパフォーマンスをチェックできます。このスケールの値が小さいほど、スピードは速くなります。
  • トランジション アニメスケール: トランジション アニメーションの再生速度を設定して、さまざまなスピードでのパフォーマンスをチェックできます。このスケールの値が小さいほど、スピードは速くなります。
  • 2 次画面シミュレート: デバイス上にオーバーレイとしてセカンダリ ディスプレイを作成します。これは、Presentation API を使用して追加ディスプレイをサポートする場合に便利なオプションです。詳細については、セカンダリ ディスプレイをご覧ください。

ハードウェア アクセラレーテッド レンダリング

図 8: 第二色弱の色空間

ハードウェア アクセラレーテッド レンダリング オプションを使用すると、GPU や、ハードウェア レイヤ、マルチサンプル アンチエイリアス(MSAA)など、ハードウェア ベースのオプションを活用して、対象ハードウェア プラットフォーム向けにアプリを最適化することができます。

[色空間シミュレート] をタップすると、デバイス UI 全体の配色を変更できます。このオプションは、各種の色覚異常に対応しています。選択肢は、無効(配色シミュレートなし)、全色盲(黒、白、グレー)、第二色弱(赤緑)、第一色弱(赤緑)、第三色弱(青黄)です。第一色弱は赤色が見えづらい赤緑色盲で、第二色弱(図 8)は緑色が見えづらい赤緑色盲です。

色空間をシミュレーションしているときにスクリーンショットを撮影しても、配色を変更していない通常の色で表示されます。

他のハードウェア ベース オプションは以下のとおりです。

  • GPU レンダラの設定: デフォルトの Open GL グラフィック エンジンを Open GL Skia グラフィック エンジンに変更します。
  • GPU レンダリングを使用: アプリがデフォルトでは GPU レンダリングを使用せずに 2D を描画している場合でも、2D 描画に常に GPU を使用します。
  • GPU 表示の更新を表示: GPU を使用して描画された画面上の要素を表示します。
  • GPU オーバードローをデバッグ: 同一フレーム内で同じピクセルの描画が何度発生したかを、デバイス上で色分けして視覚化します。これにより、アプリが不要なレンダリングをしている箇所を特定できます。詳細については、GPU オーバードローを視覚化するをご覧ください。
  • 非矩形クリップ操作をデバッグ: キャンバス上のクリップ領域を無効にして、特殊な非長方形キャンバス領域を作成します。通常は、クリップ領域が有効の場合、円形のクリップ領域の境界外には描画できません。
  • 4x MSAA を適用: Open GL ES 2.0 アプリでマルチサンプル アンチエイリアス(MSAA)を有効にします。
  • HW オーバーレイを無効: ハードウェア オーバーレイを使用すると、画面表示を行うアプリが使用する処理能力を抑えることができます。オーバーレイを使用しない場合、アプリはビデオメモリを共有するようになり、適切な画像をレンダリングするために常に競合とクリッピングをチェックする必要があります。このチェックのために、使用する処理能力が増加します。

メディア

図 9: バー表示

[USB オーディオ ルーティングを無効化] を有効にすると、USB ポートを通じてデバイスに接続している外部オーディオ機器への自動ルーティングが無効化されます。自動ルーティングは、USB を認識するアプリの動作を妨げる場合があります。

モニタリング

モニタリング オプションを使用すると、時間のかかるスレッド処理や GPU 動作など、アプリのパフォーマンス情報を視覚化できます。

[GPU レンダリングのプロファイル作成] をタップして、[バーとして画面に表示] をタップすると、図 9 のように、GPU レンダリングのプロファイルがバーで表示されます。詳細については、GPU レンダリングをプロファイリングするをご覧ください。

アプリ

図 10: バックグラウンド プロセスの上限を設定する

アプリ オプションを使用すると、ターゲット デバイス上のアプリの動作を把握できます。

[バックグラウンド プロセスの上限] をタップすると、一度にバックグラウンドで実行できるプロセスの数を設定できます。選択肢は、図 10 のとおりです。

テスト中に [ShortcutManager のレート制限をリセット] をタップすると、バックグラウンド アプリは、再びレートの上限に達するまでショートカット API を呼び出し続けることができます。ショートカットやレートの上限の詳細については、ShortcutManager をご覧ください。

[アクティビティを保持しない] を有効にした場合、ユーザーがアクティビティのメインビューを離れると、すぐにそのアクティビティが破棄されるため、電池寿命が長くなります。