ベースライン プロファイルを作成する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

アプリ デベロッパーは、Jetpack Macrobenchmark ライブラリBaselineProfileRule を使用することで、アプリのリリースごとにプロファイルを自動的に生成できます。ベースライン プロファイルを使用する際のビルドの改善がある com.android.tools.build:gradle:7.3.0 以上をおすすめします。

Macrobenchmark ライブラリを使用してベースライン プロファイルを作成するには:

  1. Gradle プロジェクトに Macrobenchmark モジュールをセットアップします。

  2. 次のような、BaselineProfileGenerator という新しいテストを定義します。

    @OptIn(ExperimentalBaselineProfilesApi::class)
    class TrivialBaselineProfileBenchmark {
        @get:Rule
        val baselineProfileRule = BaselineProfileRule()
    
        @Test
        fun startup() = baselineProfileRule.collectBaselineProfile(
            packageName = "com.example.app",
            profileBlock = {
                startActivityAndWait()
            }
        )
    }
    

    @BaselineProfileRule を使用してクリティカル ユーザー ジャーニーを改善するテストに関して、その他の例をご覧ください

  3. Gradle で管理されているデバイスをセットアップするには、build.gradle.kts ファイルを開き、testOptions 設定ブロック内に managedDevicesdevices を追加して、エミュレータの定義を作成します。ベースライン プロファイル生成ツールは root アクセスを必要とするため、必ず aospsystemImageSource として使用してください。

    Kotlin

    testOptions {
        managedDevices {
            devices {
                create ("pixel6Api31", ManageVirtualDevice::class) {
                    device = "Pixel 6"
                    apiLevel = "31"
                    systemImageSource = "aosp"
                }
            }
        }
    }
    

    Groovy

    testOptions {
        managedDevices {
            devices {
                pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                    device = "Pixel 6"
                    apiLevel = 31
                    systemImageSource = "aosp"
                }
            }
        }
    }
    
  4. Gradle は、選択されたデバイス名と、モジュールで利用可能なビルド バリアントに基づいて、タスクを作成します。その形式は [emulator_name][flavor][build type]AndroidTest です。このタスクは、ターミナルから実行できます。次に例を示します。

    ./gradlew :benchmark:pixel2Api31BenchmarkAndroidTest
    

生成したルールを適用する

  1. 生成されたプロファイルは [module name]/build/outputs/managed_device_android_test_additional_output/[device name] にあります。プロファイルは [class name]-[test method name]-baseline-prof.txt という命名パターンに従います(例: TrivialBaselineProfileBenchmark-startup-baseline-prof.txt)。

  2. 生成されたプロファイルを、AndroidManifest.xml とともにアプリ モジュールの src/main/ にコピーします。ファイルの名前を baseline-prof.txt に変更します。

  3. アプリの build.gradleProfileInstaller ライブラリに依存関係を追加し、ローカルと Play ストアのベースライン プロファイルのコンパイルを有効にします。これは、ベースライン プロファイルをローカルでサイドローディングする唯一の方法です。

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.2.0")
    }
    

その他の注意事項

ベースライン プロファイルを作成するときは、次の点にも注意してください。

  • ベンチマークのビルドを難読化しないでください。ベースライン プロファイルを生成するとき、必ず -dontobfuscate を Proguard ルールファイルに追加してください。

  • ベースライン プロファイルを圧縮する場合は、1.5 MB 未満でなければなりません。ベースライン プロファイルのサイズは、apk の場合は assets/dexopt/baseline.prof、aab の場合は BUNDLE-METADATA/com.android.tools.build.profiles/baseline.prof の出力アーティファクトで確認できます。

  • アプリのコンパイルが多すぎる広範なルールでは、ディスク アクセスの増加により起動が遅くなる可能性があります。ベースライン プロファイルのパフォーマンスをテストする必要があります。