起動プロファイルはベースライン プロファイルのサブセットです。起動プロファイルは、ビルドシステムによって使用され、APK の DEX ファイル内のコードのレイアウトを改善することで、クラスとメソッドをさらに最適化します。起動プロファイルを使用すると、通常、ベースライン プロファイルのみを使用する場合よりもアプリの起動が 15 ~ 30% 高速になります。

要件
起動プロファイルは、次のツールで使用することをおすすめします。
- Jetpack Macrobenchmark 1.2.0 以降
- Android Gradle プラグイン 8.2 以降
- Android Studio Iguana 以降
また、アプリで次の設定を行う必要があります。
- R8 が有効になっている。リリースビルドの場合は、
isMinifyEnabled = true
を設定します。 - DEX レイアウトの最適化が有効になっている。アプリ モジュールのビルドファイルの
baselineProfile {}
ブロックで、dexLayoutOptimization = true
を設定します。
起動プロファイルを作成する
デフォルトのベースライン プロファイル ジェネレータ テンプレートを使用すると、Android Studio はベースライン プロファイルとともに起動プロファイルを作成します。
起動プロファイルを作成して生成する一般的な手順は、ベースライン プロファイルを作成する手順と同じです。
起動プロファイルを作成するデフォルトの方法は、Android Studio 内でベースライン プロファイル ジェネレータ モジュール テンプレートを使用することです。これには、基本的な起動プロファイルを形成する起動操作が含まれます。この起動プロファイルにクリティカル ユーザー ジャーニー(CUJ)を追加するには、アプリの起動 CUJ を rule
ブロックに追加し、includeInStartupProfile
を true
に設定します。シンプルなアプリの場合は、アプリの MainActivity
を起動すれば十分です。より複雑なアプリの場合は、ホーム画面からアプリを起動したり、ディープリンクから起動したりするなど、アプリに最も一般的なエントリ ポイントを追加することを検討してください。
次のコード スニペットは、ホーム画面からアプリを起動したり、ディープリンクに起動したりするベースライン プロファイル生成ツール(デフォルトでは BaselineProfileGenerator.kt
ファイル)を示しています。ディープリンクは、アプリのホーム画面ではなく、アプリのニュースフィードに直接移動します。
@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {
@get:Rule
val rule = BaselineProfileRule()
@Test
fun generate() {
rule.collect(
packageName = "com.example.app",
includeInStartupProfile = true
) {
// Launch directly into the NEWS_FEED.
startActivityAndWait(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
アプリのベースライン プロファイルを生成する構成を実行し、src/<variant>/generated/baselineProfiles/startup-prof.txt
で起動プロファイル ルールを見つけます。
起動プロファイルの作成に関する考慮事項
起動プロファイルのクラスとメソッドの出力は、最初の classes.dex ファイルのサイズによって制限されます。つまり、すべてのベースライン プロファイル ジャーニーが起動プロファイル ジャーニーである必要はありません。
起動プロファイルを作成する際にカバーするユーザー ジャーニーを決定するには、ほとんどのユーザーがアプリを起動する場所を検討します。通常は、ランチャーからログイン後に行われます。これは、最も基本的なベースライン プロファイルのジャーニーでもあります。
最初のユースケースをカバーしたら、アプリの起動のユーザー ファネルに沿ってテストします。多くの場合、アプリの起動ファネルは次のようになります。
- メイン ランチャー アクティビティ
- アプリの起動をトリガーする通知
- オプションのランチャー アクティビティ
このリストを上から順に処理し、classes.dex がいっぱいになる前に停止します。後でさらに多くのシナリオをカバーするには、起動パスからコードを移動し、さらにシナリオを追加します。コードを起動パスから移動するには、アプリの起動中の Perfetto トレースを調べて、長時間実行オペレーションを探します。また、メソッド トレースを有効にした macrobenchmark を使用して、アプリの起動時のメソッド呼び出しを自動的に完全なビューで確認することもできます。
あなたへのおすすめ
ベースライン プロファイルを作成する
Plan to create quality apps and features from the start by understanding best practices and requirements.
ベースライン プロファイルの概要
Plan to create quality apps and features from the start by understanding best practices and requirements.
Microbenchmark を作成する
Plan to create quality apps and features from the start by understanding best practices and requirements.