Android アプリのプロファイリング

アプリ ストアにアプリを配置する前に、パフォーマンスのボトルネック、メモリの過剰使用の問題、またはネットワーク リソースの非効率的な使用を識別して修正することが重要です。 この目的を果たすには、次の 2 つのプロファイラー ツールを利用できます。

  • Xamarin Profiler
  • Android Studio 内の Android Profiler

このガイドでは、Xamarin Profiler を紹介し、Android Profiler の使用を開始するための詳細な情報を提供します。

Xamarin Profiler

Xamarin Profiler は、IDE 内から Xamarin アプリをプロファイリングするために Visual Studio および Visual Studio for Mac に統合されているスタンドアロン アプリケーションです。 Xamarin Profiler の使用の詳細については、「Xamarin Profiler」を参照してください。

注意

Windows 用 Visual Studio Enterprise または Visual Studio for Mac のいずれかで Xamarin Profiler 機能のロックを解除するには、Visual Studio Enterprise のサブスクライバーである必要があります。

Android Studio Profiler

Android Studio 3.0 以降には、Android Profiler ツールが含まれています。 Android Profiler を使用すると、Visual Studio Enterprise ライセンスを必要とせずに、Visual Studio で構築された Xamarin Android アプリのパフォーマンスを測定できます。 ただし、Android Profiler は、Xamarin Profiler とは異なり、Visual Studio に統合されていないため、あらかじめビルドされ Android Profiler にインポートされた Android アプリケーション パッケージ (APK) をプロファイリングする場合にのみ使用できます。

Android Profiler での Xamarin Android アプリの起動

次の手順では、Android Studio の Android Profiler ツールで Xamarin Android アプリケーションを起動する方法について説明します。 次のスクリーン ショットの例では、Xamarin Forms の XamagonXuzzle アプリがビルドされ、Android Profiler を使用してプロファイリングされています。

  1. Android プロジェクトのビルド オプションで、[共有ランタイムの使用] を無効にします。 これで、Android アプリケーション パッケージ (APK) は、開発時の共有 Mono ランタイムとの依存関係なしで、ビルドされるようになります。

    共有ランタイムの使用を無効にする

  2. デバッグ用のアプリをビルドし、物理デバイスまたはエミュレーターに配置します。 これにより、APK の署名付きデバッグ バージョンがビルドされます。 XamagonXuzzle の例では、結果として得られる APK に com.companyname.XamagonXuzzle Signed.apk という名前が付けられます。

  3. プロジェクト フォルダーを開き、bin/debug に移動します。 このフォルダー内でアプリの Signed.apk バージョンを見つけ、それを便利にアクセスできる場所 (デスクトップなど) にコピーします。 次のスクリーン ショットの例では、APK com.companyname.XamagonXuzzle Signed.apk を見つけて、デスクトップにコピーします。

    デバッグ署名付き APK ファイルの場所

  4. Android Studio を起動し、[Profile or debug APK]\(プロファイルまたはデバッグ APK\) を選択します。

    Android Studio の起動画面からプロファイラーを起動する

  5. [Select APK File]\(APK ファイルの選択\) ダイアログ内で、前にビルドしてコピーした APK に移動します。 APK を選択し、[OK] をクリックします。

    [APK ファイルの選択] ダイアログで APK を選択する

  6. Android Studio によって APK が読み込まれ、classes.dex が逆アセンブルされます。

    APK の設定

  7. APK が読み込まれると、Android Studio によって APK 用の次のプロジェクト画面が表示されます。 左側のツリー ビューでアプリ名を右クリックして、[Open Module Settings]\(モジュール設定を開く\) を選択します。

    [モジュール設定を開く] メニュー項目の場所

  8. [プロジェクト設定モジュール] >に移動し、アプリの [署名済み] ノードを選択し、[SDK> なし] をクリックします<

    SDK 設定への移動

  9. [モジュール SDK] プルダウン メニューで、アプリのビルドに使用された Android SDK レベルを選択します (この例では、API レベル 26 を使用して XamagonXuzzle をビルドしました)。

    Project SDK レベルの設定

    [Apply]\(適用\)[OK] の順にクリックして、この設定を保存します。

  10. ツール バー アイコンからプロファイラーを起動します。

    プロファイラー ツール バー アイコンの場所

  11. アプリを実行/プロファイリングするために配置ターゲットを選択して、[OK] をクリックします。 配置ターゲットとしては、物理デバイスまたはエミュレーターで実行されている仮想デバイスを指定できます。 この例では、Nexus 5 X デバイスを使用します。

    デプロイ ターゲットの選択

  12. プロファイラーを起動後、プロファイラーが配置デバイスおよびアプリのプロセスに接続するのに数秒かかります。 APK がインストールされている間、Android Profiler は接続されているデバイスが存在しないこと、およびデバッグ可能なプロセスが存在しないことをレポートします。

    プロファイラーが APK をインストールする

  13. 数秒後、Android Profiler は APK のインストールを完了して APK を起動します。このときデバイス名とプロファイリングされるアプリ プロセスの名前がレポートされます (この例では、LGE Nexus 5 Xcom.companyname.XamagonXuzzle がそれぞれ該当します)。

    起動後のプロファイラー ウィンドウ

  14. デバイスとデバッグ可能なプロセスが特定されると、Android Profiler によってアプリのプロファイリングが開始されます。

    実行中のアプリのプロファイラーの表示

  15. XamagonXuzzle 上の [RANDOMIZE]\(ランダム化\) ボタンをタップすると (これによって、タイルがシフトおよびランダム化されます)、アプリのランダム化の間隔中に CPU の使用率が高くなるのがわかります。

    RANDOMIZE ボタンがタップされたときの CPU 使用率

Android Profiler の使用

Android Profiler の使用の詳細については、Android Studio のドキュメントを参照してください。 次のトピックは、Xamarin Android 開発者を対象としています。

  • CPU Profiler – アプリの CPU 使用率とスレッド アクティビティをリアルタイムで検査する方法について説明します。

  • メモリ プロファイラー – アプリのメモリ使用量のリアルタイム グラフを表示し、分析のためにメモリ割り当てを記録するボタンが含まれています。

  • ネットワーク プロファイラー – アプリによって送受信されるデータのリアルタイム ネットワーク アクティビティを表示します。