このドキュメントでは、ベースライン プロファイルと起動プロファイルの違いについて説明します。
ベースライン プロファイル Gradle プラグインを使用すると、BaselineProfileRule テストで生成された人間が読めるベースライン プロファイル ファイルを自動的にキャプチャできます。アプリをビルドする際、Android Gradle プラグイン(AGP)は、これらの人間が読めるプロファイル ルールをバイナリ形式にコンパイルし、Android パッケージ キット(APK)または Android App Bundle(AAB)内の baseline.prof としてパッケージ化します。バイナリ プロファイルが 1.5 MB 未満であれば、Android ランタイム(ART)はオンデバイス コンパイルにこのバイナリ プロファイルを効果的に使用できます。
生成されるプロファイル ファイルの名前は通常 startup-prof.txt と baseline-prof.txt です。
ベースライン プロファイル
ベースライン プロファイル ファイルには、ART が頻繁に使用されるコードパスを事前コンパイルするために使用する包括的なルールのセットが含まれています。これにより、アプリの起動が最適化され、インタラクション ジャンクが削減され、全体的なランタイム パフォーマンスが向上します。
ベースライン プロファイル ファイルは通常、スタートアップ プロファイルにあるルールのスーパーセットです。このファイルには、アプリの起動の最適化に必要なすべてのルール(baselineProfile Gradle タスクで生成)と、他の重要なユーザー ジャーニーの追加プロファイルが含まれています。たとえば、スクロールや異なる画面間の移動などです。
これらの非起動ルールは、includeInStartupProfile 構成フィールドの値に関係なく生成されます。詳細については、ベースライン プロファイルの概要をご覧ください。
スタートアップ プロファイル
スタートアップ プロファイル ファイルには、アプリのスタートアップ パス用に特別に最適化されたルールが含まれています。コンパイル時に、D8 と R8 は Java バイトコードを使用して Dalvik 実行可能(DEX)ファイルを生成します。D8 と R8 はどちらも起動プロファイルを使用して、重要な起動コードをプライマリ .dex ファイルに配置することで DEX レイアウトを最適化し、クラスの読み込みを高速化します。パフォーマンスを最大限に向上させるには、このプライマリ .dex ファイル内にスタートアップ コードを含める必要があります。起動コードの累積サイズが大きすぎると、後続の DEX ファイルにオーバーフローします。後続の DEX ファイルには、通常、重要でないクラスやメソッドが格納されるため、起動が遅くなります。
起動プロファイルは DEX レイアウトの最適化に必要なメタデータを提供しますが、R8 コードの最適化はこのプロセスを支援するうえで非常に効果的です。R8 は、未使用のコードを削除し、バイトコードを最小化することで、起動ロジックのフットプリントの合計を削減します。この削減により、重要なコードがプライマリ .dex ファイル内に残る可能性が高まり、オーバーフローを防ぎ、幅広い Android バージョンでより効率的な実行を保証します。一般的に、includeInStartupProfile は、アプリの初期表示に不可欠なテスト シナリオでのみ true に設定する必要があります。
詳細については、スタートアップ プロファイルの概要をご覧ください。