오늘은 지난번에 이어서 Baseline Profile 생성에 대해 정리해봤다.
이전글 Android Baseline Profiles 정리1
공식문서링크
app release 를 위해 Macrobenchmark 라이브러리와 BaselineProfileRule 을 사용하여 프로필이 자동으로 생성된다.
개발 중 설치 시간을 최소화 하기 위해 Baseline Profiles 는 release build 에서만 설치 된다.
새로운 Baseline Profile 를 생성하기 위한 일반적인 단계는 다음과 같다.
생성된 Baseline Profile 은 실제 기기를 사용하여 성능 개선 사항을 측정한다.
새로운 Baseline Profile 을 생성하는 가장 쉬운 방법은 Baseline Profile Module 템플릿을 사용하는 것이다.
Android Studio Baseline Profile Generator Module 템플릿은 BaselineProfile 을 생성하고 벤치마크하는 새로운 모듈의 생성을 자동화한다. 이 템플릿을 실행하면 일반적인 빌드 구성, Baseline Profile 생성 및 검증 코드의 대부분이 생성된다. 또한, 앱 시작 시간을 측정하기 위해 Baseline Profiles 을 생성하고 벤치마크 하는 코드를 만든다.
Baseline Profile Module 템플릿을 실행하려면 다음 단계대로 실행하면 된다.

새로 생성된 모듈에는 Baseline Profile 을 생성하고 벤치마크하는 테스트와 기본 앱 시작(app startup) 만 테스트 하는 코드가 포함되어 있다. 이 기본 테스트를 보강하여 Critical User Journeys 와 고급 시작 워크플로우를 포함하는 것을 권장한다. 앱 시작과 관련된 테스트는 반드시 includeInStartProfile 이 true 로 설정된 규칙 블록 안에 있어야 하며, 반대로 앱 시작과 관련이 없는 테스트는 Startup Profile 에 포함되지 않도록 해야 최적의 성능을 유지할 수 있다. app startup 의 최적화는 Baseline Profile 의 특별한 부분인 Startup Profile 를 정의하는데 사용된다.
Baseline Profile 모듈 템플릿은 Baseline Profile 을 생성하기 위한 새로운 run configuration 을 추가한다. Product Flavors 를 사용하는 경우, Android Studio 는 각 flavor 에 대해 별도의 Baseline Profile 을 생성할 수 있도록 여러 run configuration 을 만든다.

Generate Baseline Profile 실행 구성이 완료되면, 생성된 Baseline Profile 이 프로파일링된 모듈의 src/variant/generated/baselineProfiles/baseline-prof.txt 파일로 복사된다. 이 variant option 은 release build type 또는 release build type 을 포함하는 build variant 이다.
생성된 Baseline Profile 은 기본 build/outputs에 생성된다. 전체 경로는 프로파일링되는 앱의 variant 또는 flavor 에 따라 달라지며, Gradle-managed device 나 연결된 장치를 사용하는지 여부에 따라 달라진다. 템플릿에 의해 생성된 코드와 build configuration 에서 사용되는 이름을 사용하면, Baseline Profile 은 build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt 파일에 생성 된다.
Baseline Profile 을 벤치마크 하려면, StartupBenchmarks.kt 또는 StartupBenchmarks.java 파일에 정의된 벤치마크를 실행하는 새로운 Android Instrumented Test Run configuration 을 생성해야 한다.
벤치마크 테스트에 대해 자세히 알아보려면, Create a Macrobenchmark class , Automate measurement with the Macrobenchmark library 를 참조하자.
라이브러리의 Baseline Profile 을 생성하려면 Baseline Profile Gradle Plugin 을 사용해야 한다.
Baseline Profile 를 생성하는데 관련된 3가지 모듈은 다음과 같다.
라이브러리에 대한 Baseline Profile 을 생성하려면 다음 단계를 수행한다.
com.android.test 모듈 생성 : ex) :baseline-profile :baseline-profile 모듈의 build.gradle.kts 파일 구성 : configuration 은 기본적으로 앱과 동일하지만, targetProjectPath 를 샘플 앱 모듈로 설정해야 한다.:baseline-profile 테스트 모듈에서 Baseline Profile 테스트 생성 : 이는 샘플 앱에 특정해야 하며, 라이브러리의 모든 기능을 사용해야 한다.build.gradle.kts 파일 업데이트 : 예를 들어 :library 모듈androidx.baselineprofile 플러그인 적용:baseline-profile 모듈에 대한 baselineProfile 의존성 추가plugins {
id("com.android.library")
id("androidx.baselineprofile")
}
android { ... }
dependencies {
...
// Add a baselineProfile dependency to the `:baseline-profile` module.
baselineProfile(project(":baseline-profile"))
}
// Baseline Profile Gradle plugin configuration.
baselineProfile {
//Filters the generated profile rules.
// This example keeps the classes in the `com.library` package all its subpackages.
filter {
include "com.mylibrary.**"
}
}
:sample-app 의 build.gradle.kts 파일에 아래와 같이 플러그인 추가plugins {
...
id("androidx.baselineprofile")
}
./gradlew :library:generateBaselineProfile.library/src/main/generated/baselineProfiles에 저장된다.