Android 5.0 Lollipopでは多くの機能が追加されています。それら機能追加に伴い、開発者オプションも更新されました。
ここでは効率的な開発&デバッグのための機能を紹介します。開発者オプションのメニューは上から、一般(無印)、デバッグ、入力、描画、ハードウェア支援、メディア、監視、アプリと8項目に分かれています。紹介する開発者オプションは、40項目を超えますが新しい機能を中心に、名前を見ただけでは内容がわからない項目にも触れていきます。開発者オプションの内容を知り、新機能に触れてみましょう!
ジャンルごと、順番に紹介していきます。
開発者向けオプション(一般)
オプション名 | 説明 |
---|---|
バグレポートを取得 | 端末情報を収集してメールで送信する |
PCバックアップパスワード | バックアップデータを保護する |
スリープモードにしない | 充電中は画面表示しつづける |
Bluetooth HCIスヌープログを有効にする | パケットを監視してファイルに保存する |
OEMロック解除を有効にする | ブートローダーのアンロックを行います |
プロセスの統計情報 | プロセスのメモリ使用状況を詳しく確認する |
「バグレポートを取得」では、OSの状態(メモリ、プロセス、スタックなど)を含むデバッグ情報が得られます。データサイズが大きいため、取得には数十秒から数分かかります。「Bluetooth HCIスヌープログを有効にする」ではBluetoothの最下層のインターフェイスであるHCIのパケットを監視、ログとして保存します。
「OEMロック解除を有効にする」は、Android端末のソフトそのものを入れ替えるための機能です。ブートローダーのロックを解除して、アンロック状態にします。この操作を行うことで、root化やカスタムROMを導入できます(製造元によってはroot化やカスタムROMへの入れ替え、また、伴うトラブルはハードウェア保証の対象外です)。
アプリケーションごとのメモリ使用量を知る
「プロセスの統計情報」は、アプリケーションごとのメモリの使用状況を把握できる便利な機能です。メモリリークの調査にうってつけです。
メニューからは、統計期間(3時間、6時間、…)バックグラウンド、フォアグラウンドなどアプリの状態ごとに指定でき、解析に必要な情報を絞り込めます。
「使用状況の詳細」画面では、アプリごとに平均、最大RAM使用量、実行時間を確認できます
開発者向けオプション(デバッグ)
オプション名 | 説明 |
---|---|
USBデバッグ | デバッグモードを有効にする |
USBデバッグの許可の取り消し | PCの接続許可を取り消す |
バグレポートのショートカット | 電源メニューに追加する |
疑似ロケーションを許可 | GPS位置情報を疑似的に生成する |
表示属性検査を有効にする | View階層構造のデバッグを許可する |
デバッグアプリを選択 | 起動処理のデバッグに利用する |
デバッガを待機 | onCreateを実行する前にデバッガと接続する |
USB経由のアプリを確認 | 不正なアプリのインストールを予防する |
ワイヤレスディスプレイ認証 | Miracast互換オプションを表示する |
Wi-Fi詳細ログの有効化 | LogCatに詳細なログを表示する |
Wi-Fiを強制的にモバイル接続に切り替える | モバイル接続を優先する |
Wi-Fiローミングスキャンを常に許可する | アクセスポイントの自動切り替えを常に有効する |
ログバッファのサイズ | LogCatのリングバッファサイズを拡張する |
13項目がデバッグとしてまとめられています。「疑似ロケーションを許可」では疑似的な位置情報の利用を許可します。位置系アプリケーションでは便利な機能です。「デバッグアプリを選択」は項目名からはわかりませんが、アプリケーションの起動前にデバッガをアタッチできる機能です。「Wi-Fiを強制的にモバイル接続に切り替える」は優先的にモバイルデータ通信を利用します。
View HierarchyでView構造をチェックする
開発者オプションのなかに「表示属性検査を有効にする」という不思議な項目があります。これは英語表記のほうがわかりやすいかもしれません。英語では「Enable view attribute inspection」、Viewクラスの属性情報を監査するという意味だと思いますが、直訳したのでしょう。
利用には、チェックボックスを有効にしてから、Android Studio(またはEclipse)のAndroid Device Monitorから「Dump View Hierarchy for UI Automator」を選択します。
View Hierarchyでは、Viewの階層構造をダンプして構造やViewのもつ属性値を視覚化します。Viewの入れ子を減らすことはパフォーマンスに貢献するほか、現在のViewに何が設定されているか、その場でチェックできます。
LogCatのリングバッファを増やす
「ログのバッファサイズ」という項目は、LogCatのリングバッファを指しています。標準では256KBですが、64K,256K,1MB,4MB,16MBに拡張可能です
変更後は次のようなログがLogCatに出力されます。
11-07 01:49:35.700: I/DevelopmentSettings(19706): Logcat ring buffer sizes set to: 16777216
リングバッファを増やすと読み込みに時間がかかりますが、重要なログを失いません。アプリのログが多い、長時間デバッグが必要な状況では、重宝するでしょう。
開発者向けオプション(入力)
オプション名 | 説明 |
---|---|
タップを表示 | 画面にタップ情報をオーバーレイする |
ポインタの位置 | タップの詳細を画面にオーバーレイする |
「タップを表示」「ポインタの位置」どちらもインプットデバイスの入力情報を可視化します。
タップを表示する
「タップを表示」ではOSが認識している指の位置(TouchEvent)を画面に表示します。デバッグだけでなく、操作方法を動画で撮る場合など指の動きを記録する用途にも利用できます。
ポインタの位置
「ポインタの位置」では画面上部に座標、加速度、圧力値、サイズなどタップの詳細情報を表示します。画面上には移動した軌跡をオーバーレイして、開発者はタップ操作がOSで受け付けられ、アプリへ入力されているか、を確認できます。ジェスチャや操作が受け付けられない不具合などで原因の切り分けに役立ちます。
開発者向けオプション(描画)
オプション名 | 説明 |
---|---|
表示面の更新を表示 | 画面の更新箇所を点滅して通知する |
レイアウト境界を表示 | 境界線、マージンを確認する |
RTLレイアウト方向を使用 | 右から左へ読む文字のレイアウトを適用する |
ウィンドウアニメスケール | ウィンドウのアニメ速度を変更する |
トランジションアニメスケール | トランジション速度を変更する |
Animator再生時間スケール | アニメーション速度を変更する |
2次画面シミュレート | セカンダリディスプレイを仮想表示する |
開発者オプションの描画は7項目あります。画面の点滅により更新頻度がわかるため、パフォーマンス解析、改善に役立ちます。
「レイアウト境界を表示」「RTLレイアウト方向を使用」などの項目は画面レイアウト崩れの確認、View構成の簡易チェックに利用します。
レイアウト境界を表示
RTLレイアウト方向を使用
ウィンドウアニメスケール
「ウィンドウアニメスケール」「トランジションアニメスケール」「Animator再生時間スケール」ではアニメーションの再生速度を変更できます。アニメーションのイージングなど細かい調整をゆっくりした速度で、または早く再生してショートカットするなど内容に合わせてチェックします。
2次画面シミュレート
Android 4.2からサポートされたSecondary Displaysのシミュレート機能です(こちらも直訳のため、項目名が日本語としてちょっと通じにくくなっています)。各種サイズのディスプレイを仮想的に表示します。
開発者向けオプション(ハードウェアアクセラレーテッドレンダリング)
オプション名 | 説明 |
---|---|
GPUレンダリングを使用 | 常にGPUで画面を描画する |
GPU表示の更新を表示 | GPUの描画個所を点滅して通知する |
ハードウェア層情報を表示 | ハードウェアレイヤを緑色で表示する |
GPUオーバードローをデバッグ | 重ね描きを別の色で表示する |
非矩形クリップ操作をデバッグ | 矩形以外の領域を表示する |
4x MSAAを適用 | アンチエイリアシングを有効にする |
HWオーバーレイを無効 | GPUを使ってオーバレイ合成を行う |
色空間シミュレート | 色弱の方向けの見え方を検証する |
開発者向けオプション(ハードウェアアクセラレーテッドレンダリング)では、レンダリングに関わる項目を扱っています。
「GPUレンダリングを使用」「GPU表示の更新を表示」ではGPUを利用した描画処理をチェックします。特に「GPUオーバードローをデバッグ」機能はパフォーマンス改善に役立ちます。
オーバードローとは重ね塗りの状態で、いくつものViewを重ねて描画するため処理に時間がかかる部分と言えます。あまりに多くのViewがオーバードローされている場合、View構造に無駄がないか再度確認してください(推奨されている回数は3回のオーバードローまでです)。
色空間シミュレート
「色空間シミュレート」を使えば、色弱の方向けの見え方も確認できます。
開発者向けオプション(メディア)
オプション名 | 説明 |
---|---|
NuPlayer(試用版)を使用 | メディアプレイヤーを最新版で置き換えます |
USBオーディオルーティングを無効化 | USBオーディオの自動検出を行いません |
開発者向けオプション(メディア)では、Android L Previewから追加されたNuPlayer、USBオーディオが対象です。
「NuPlayer(試用版)を使用」項目を有効にするとMediaPlayerを最新のNuPlayerに切り替えます。チェックボックスがオフの場合は通常通り、AwesomePlayerが使われます(メディアプレイヤーが近々新しくなりそうですね)。
開発者向けオプション(監視)
オプション名 | 説明 |
---|---|
厳格モードを有効にする | メインスレッドの遅延を監視します |
CPU使用状況を表示する | アプリごとのCPU利用率をオーバーレイ表示する |
GPUレンダリングのプロフィール作成 | GPUのダンプ情報を取得する |
OpenGLトレースを有効化 | OpenGL利用状況をトレースする |
開発者向けオプション(監視)ではアプリケーションを監視/解析する4項目があります。「厳格モードを有効にする」項目ではメインスレッドを保護するため、メインスレッドでの動作時間を監視し、長時間メインスレッドを占有する処理があれば警告します。たとえばコールバックをうけた場合などはスレッドを意識しにくいため、厳格モードを使えば、メインスレッドでのディスクアクセスなど意図しない遅延を探して早期に手当できます。
「CPU使用状況を表示する」項目はCPU負荷を確認できます。
開発者向けオプション(アプリ)
オプション名 | 説明 |
---|---|
アクティビティを保持しない | アクティビティを直ちに破棄する |
バックグラウンドプロセスの上限 | プロセス数を制限する |
すべてのANRを表示 | バックグラウンドのANRも検出する |
開発者向けオプション(アプリ)ではアプリケーションの動作を制約して、低メモリ環境に近い状況を作り出せます。「アクティビティを保持しない」項目では、アクティビティを直ちに破棄するため、中断処理を検証できます。破棄される場合は、onSavedInstanceメソッドが呼び出され、復帰に備えてインスタンスの状態を保存します。開発機ではメモリに余裕がある場合が多く、中断系の不具合が中々発生しないことがあります。そのようなケースで有用なオプションです。
「バックグラウンドプロセスの上限」項目も同様です。通常Androidがプロセスを終了するタイミングは予測しにくいですが、この項目があることでプロセスの中断、復帰など普段、検証しにくい部分を確認できます。
以上、おつかれさまでした。