Android Baseline Profiles 정리2 - Create Baseline Profiles

wonsohana·2024년 9월 28일

오늘은 지난번에 이어서 Baseline Profile 생성에 대해 정리해봤다.
이전글 Android Baseline Profiles 정리1

공식문서링크

Create Baseline Profiles

app release 를 위해 Macrobenchmark 라이브러리와 BaselineProfileRule 을 사용하여 프로필이 자동으로 생성된다.

개발 중 설치 시간을 최소화 하기 위해 Baseline Profiles 는 release build 에서만 설치 된다.

새로운 Baseline Profile 를 생성하기 위한 일반적인 단계는 다음과 같다.

  1. Baseline Profile 을 위한 module 설정
  2. Baseline Profile 생성을 도와주는 Junit 테스트 정의
  3. 최적화할 Critical User Journeys (CUJs) 추가
  4. Baseline Profile 생성

생성된 Baseline Profile 은 실제 기기를 사용하여 성능 개선 사항을 측정한다.

Create a new Baseline Profile with AGP 8.2 or higher

새로운 Baseline Profile 을 생성하는 가장 쉬운 방법은 Baseline Profile Module 템플릿을 사용하는 것이다.

Android Studio Baseline Profile Generator Module 템플릿은 BaselineProfile 을 생성하고 벤치마크하는 새로운 모듈의 생성을 자동화한다. 이 템플릿을 실행하면 일반적인 빌드 구성, Baseline Profile 생성 및 검증 코드의 대부분이 생성된다. 또한, 앱 시작 시간을 측정하기 위해 Baseline Profiles 을 생성하고 벤치마크 하는 코드를 만든다.

Baseline Profile Module 템플릿을 실행하려면 다음 단계대로 실행하면 된다.

  1.  File > New > New Module 선택
  2. 템플릿에서 Baseline Profile Generator 선택

  1. Finish 를 선택하면 새로운 모듈이 생성된다.

Baseline Profile generator 정의

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

Generate and install the Baseline 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 파일에 생성 된다.

Benchmark the Baseline Profile

Baseline Profile 을 벤치마크 하려면, StartupBenchmarks.kt 또는 StartupBenchmarks.java 파일에 정의된 벤치마크를 실행하는 새로운 Android Instrumented Test Run configuration 을 생성해야 한다.

벤치마크 테스트에 대해 자세히 알아보려면,  Create a Macrobenchmark class ,  Automate measurement with the Macrobenchmark library 를 참조하자.


Create Baseline Profiles for a library

라이브러리의 Baseline Profile 을 생성하려면 Baseline Profile Gradle Plugin 을 사용해야 한다.

Baseline Profile 를 생성하는데 관련된 3가지 모듈은 다음과 같다.

  1. Sample App Module : 라이브러리를 사용하는 샘플 앱이 포함되어 있다.
  2. Library module : 프로파일을 생성하려는 모듈
  3. Baseline Profile module : Baseline Profiles 을 생성하는 테스트 모듈

라이브러리에 대한 Baseline Profile 을 생성하려면 다음 단계를 수행한다.

  1. 새로운 com.android.test 모듈 생성 : ex) :baseline-profile
  2. :baseline-profile 모듈의 build.gradle.kts 파일 구성 : configuration 은 기본적으로 앱과 동일하지만, targetProjectPath 를 샘플 앱 모듈로 설정해야 한다.
  3. :baseline-profile 테스트 모듈에서 Baseline Profile 테스트 생성 : 이는 샘플 앱에 특정해야 하며, 라이브러리의 모든 기능을 사용해야 한다.
  4. 라이브러리 모듈의 build.gradle.kts 파일 업데이트 : 예를 들어 :library 모듈
    1. androidx.baselineprofile 플러그인 적용
    2. :baseline-profile 모듈에 대한 baselineProfile 의존성 추가
    3. 원하는 consumer plugin configuration 적용
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.**"
    }
}
  1. 앱 모듈 :sample-appbuild.gradle.kts 파일에 아래와 같이 플러그인 추가
plugins {
    ...
    id("androidx.baselineprofile")
}
  1. 다음 코드를 실행하여 프로파일 생성 : ./gradlew :library:generateBaselineProfile.
  • 생성 작업이 끝나면 Baseline Profile이 library/src/main/generated/baselineProfiles에 저장된다.
profile
Android Developer

0개의 댓글