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」を参照してください。
Note
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 のサンプル アプリがビルドされ、Android Profiler を使用してプロファイルされています。
Android プロジェクトのビルド オプションで、[共有ランタイムの使用] を無効にします。 これで、Android アプリケーション パッケージ (APK) は、開発時の共有 Mono ランタイムとの依存関係なしで、ビルドされるようになります。
デバッグ用のアプリをビルドし、物理デバイスまたはエミュレーターに配置します。 これにより、APK の署名付きデバッグ バージョンがビルドされます。 XamagonXuzzle の例では、結果として得られる APK に com.companyname.XamagonXuzzle Signed.apk という名前が付けられます。
プロジェクト フォルダーを開き、bin/debug に移動します。 このフォルダー内でアプリの Signed.apk バージョンを見つけ、それを便利にアクセスできる場所 (デスクトップなど) にコピーします。 次のスクリーン ショットの例では、APK com.companyname.XamagonXuzzle Signed.apk を見つけて、デスクトップにコピーします。
Android Studio を起動し、[Profile or debug APK]\(プロファイルまたはデバッグ APK\) を選択します。
[Select APK File]\(APK ファイルの選択\) ダイアログ内で、前にビルドしてコピーした APK に移動します。 APK を選択し、[OK] をクリックします。
Android Studio によって APK が読み込まれ、classes.dex が逆アセンブルされます。
APK が読み込まれると、Android Studio によって APK 用の次のプロジェクト画面が表示されます。 左側のツリー ビューでアプリ名を右クリックして、[Open Module Settings]\(モジュール設定を開く\) を選択します。
[プロジェクトの設定] > [モジュール] の順に移動し、アプリの [-Signed] ノードを選択し、<[No SDK] (SDK なし)> をクリックします。
[Module SDK]\(モジュール SDK\) プルダウン メニューで、アプリをビルドするために使用した Android SDK レベルを選択します (この例では、API レベル 26 を使用して XamagonXuzzle がビルドされています)。
[Apply]\(適用\)、[OK] の順にクリックして、この設定を保存します。
ツール バー アイコンからプロファイラーを起動します。
アプリを実行/プロファイリングするために配置ターゲットを選択して、[OK] をクリックします。 配置ターゲットとしては、物理デバイスまたはエミュレーターで実行されている仮想デバイスを指定できます。 この例では、Nexus 5 X デバイスを使用します。
プロファイラーを起動後、プロファイラーが配置デバイスおよびアプリのプロセスに接続するのに数秒かかります。 APK がインストールされている間、Android Profiler は接続されているデバイスが存在しないこと、およびデバッグ可能なプロセスが存在しないことをレポートします。
数秒後、Android Profiler は APK のインストールを完了して APK を起動します。このときデバイス名とプロファイリングされるアプリ プロセスの名前がレポートされます (この例では、LGE Nexus 5 X と com.companyname.XamagonXuzzle がそれぞれ該当します)。
デバイスとデバッグ可能なプロセスが特定されると、Android Profiler によってアプリのプロファイリングが開始されます。
XamagonXuzzle 上の [RANDOMIZE]\(ランダム化\) ボタンをタップすると (これによって、タイルがシフトおよびランダム化されます)、アプリのランダム化の間隔中に CPU の使用率が高くなるのがわかります。
Android Profiler の使用
Android Profiler の使用の詳細については、Android Studio のドキュメントを参照してください。 次のトピックは、Xamarin Android 開発者を対象としています。
CPU Profiler – アプリの CPU 使用率とスレッド アクティビティをリアルタイムで検査する方法について説明します。
Memory Profiler – アプリのメモリ使用量のリアルタイム グラフを表示します。分析のためにメモリ割り当てを記録するボタンが含まれています。
Network Profiler – アプリによって送受信されるデータのリアルタイムでのネットワーク アクティビティを表示します。