unityでいってみよう!

unityがチョットワカル位の人のブログ

Androidデバイス上で直接システム トレースを実行してみよう!

概要

Androidネイティブでのプロファイリングといえばsystraceですが、Android 9(APIレベル28)以降のデバイスであれば、デバイス上から直接システムトレースの記録を行うことが可能です。 今回はデバイス上からシステム トレースを行う方法を説明します。 設定さえ行っておけば、複雑な操作をが必要なく1タップでシステムトレースの記録を行うことが出来る為、エンジニア以外(例えばQAスタッフやデバッカー)にデバイスを渡して「あとはよろしく」という事が可能になります。

事前準備

Androidバイス上で事前準備を行う必要がありますが、1度だけ設定すれば良く、設定自体も複雑でじゃない為、手順通りに行えば躓くこともない筈です。

Android OSを Android 9以降へアップデートする

OSはAndroid 9以降である必要があります。

設定 > デバイスの情報 > Androidバージョンの値が9以上であることを確認して下さい。

9未満の場合は、 設定 > システム >システム アップデートよりシステムのアップデートを行い、Androidバージョンを9以上へアップデートを行う必要がありますが、アップデートが提供されていない場合は、デバイス上からシステムトレースを行うことは出来ませんのでご注意下さい。

開発者向けオプションの使用

開発者向けオプションが有効である必要があります。 下記の手順で「開発者向けオプションの使用」を有効にしていきます。

設定 > デバイス情報の一番下の項目にあるビルド番号を連打して下さい。 これにより、設定 > システム開発者向けオプションの項目が追加されるので、 設定 > システム > 開発者向けオプションにある開発者向けオプションの使用を有効にします。

クイック設定タイルへ[システム トレース]を追加する

クイック設定にシステムトレース用のタイルを追加することで、ワンステップでシステムトレースが実行出来る為、下記の手順でタイルの追加を行います。

設定 > システム > 開発者向けオプション > システム トレース > [クイック設定]タイルの表示を有効にする

事前準備はここ迄です。

システムトレースの記録

それではシステムトレースの記録を実行してみましょう! システムトレースを開始するには、Home画面上部から下の向けてスワイプを行いクイック設定タイルを表示し、[トレースを記録]をタップします。クイック設定にタイルを追加した直後では新規のタイルは左上に追加されています。(画像では文字が見切れていますがトレースをと表示されている部分です。)

システムトレースの記録を終了する場合、同様に先程のタイルの表示が[トレースを停止]に変わっているので、そのタイルをタップすれば記録が終了します。

操作としては下記の2Stepになりますが、これだけであれば複雑な知識を覚える必要もありません。

  • クイック設定を表示
  • システムトレースのタイルを押す

システムトレースの結果を分析してみよう

システムトレースの結果を取得する

分析を行う為には、デバイスに保存されたシステムトレースの結果をPCへコピーする必要があります。 ADBコマンドなどで取得する方法もありますが、ここではGoogle Drive経由で取得する方法を説明します。

設定 > システム > 開発者向けオプション > システム トレース > トレース ファイルを表示 をタップします。

バイスに保存されている、システムトレースが行われたファイルの一覧が表示されているので、コピーしたいファイルを選択し、 ファイルアプリケーションで開きます。 ファイルのプレビューを行うことは出来ませんが、画面上部もGoogleDriveアイコンをクリックするとGoogleドライブ上へファイルをコピーすることが出来ます。その後、PC側でGoogle Driveからトレースファイルをダウンロードして下さい。

Perfettoでファイルを開く

ここからはPC上での作業です。 システムトレースしたファイルの分析にはPerfettoというWebアプリを使用します。

Google Chrom等でPerfettoを開き、画面左のナビゲーションメニューから「Open trace file」を選択し、先程PCへ保存したトレースファイルを選択します。 (※今回の趣旨から外れますが、Record new traceを選択することでPerfettoからシステムトレースの記録を行うことも可能です。)

操作はAWSDキーで行います。 詳しい操作方法や、データの見方は別の機会に解説します。

以上です!