Compose 컴파일러 옵션 DSL
Compose 컴파일러 옵션 DSL (Compose compiler options DSL)
Compose 컴파일러 Gradle 플러그인은 다양한 컴파일러 옵션을 설정할 수 있는 DSL을 제공해요. 플러그인을 적용한 모듈의 build.gradle.kts에서 composeCompiler {} 블록을 쓰면 컴파일러를 원하는 대로 손쉽게 구성할 수 있답니다. 이번에는 이 DSL로 어떤 옵션을 지정할 수 있는지 살펴볼게요.
본문
Compose 컴파일러 Gradle 플러그인은 다양한 컴파일러 옵션을 위한 DSL을 제공해요. 플러그인을 적용하는 모듈의 build.gradle.kts 파일에서 composeCompiler {} 블록으로 컴파일러를 구성할 수 있어요.
지정할 수 있는 옵션은 두 가지 종류가 있어요.
- 일반 컴파일러 설정 — 어떤 프로젝트에서든 필요에 따라 켜거나 끌 수 있는 옵션이에요.
- 기능 플래그(feature flag) — 새롭거나 실험적인 기능을 켜거나 끄는 옵션으로, 여기서 실험을 거쳐 결국 기본값에 포함될 기능들이에요.
사용 가능한 일반 설정 목록과 지원되는 기능 플래그 목록은 Compose 컴파일러 Gradle 플러그인 API 레퍼런스에서 확인할 수 있어요.
구성 예시를 볼까요.
composeCompiler {
includeSourceInformation = true
featureFlags = setOf(
ComposeFeatureFlag.StrongSkipping.disabled(),
ComposeFeatureFlag.OptimizeNonSkippingGroups
)
}
Gradle 플러그인은 Kotlin 2.0 이전에는 수동으로만 지정했던 몇몇 Compose 컴파일러 옵션에 기본값을 제공해요. 그래서 이 중 어떤 옵션을 예컨대 freeCompilerArgs로 설정했다면 Gradle이 중복 옵션 오류(duplicate options error)를 보고할 거예요.
기능 플래그의 목적과 사용법
기능 플래그는 별도의 옵션 집합으로 관리되도록 설계되어 있어요. 새 플래그가 계속 추가되고 구식(deprecated) 플래그가 정리되면서 최상위 프로퍼티의 변경을 최소화하기 위해서죠.
기본적으로 꺼져 있는 기능 플래그를 켜려면 집합에 지정하면 돼요. 예를 들면 이렇게요.
featureFlags = setOf(ComposeFeatureFlag.OptimizeNonSkippingGroups)
기본적으로 켜져 있는 기능 플래그를 끄려면 그 플래그에서 disabled() 함수를 호출해요.
featureFlags = setOf(ComposeFeatureFlag.StrongSkipping.disabled())
Compose 컴파일러를 직접 구성한다면 아래 문법으로 기능 플래그를 전달해요.
-P plugin:androidx.compose.compiler.plugins.kotlin:featureFlag=<flag name>
지원되는 기능 플래그의 전체 목록은 Compose 컴파일러 Gradle 플러그인 API 레퍼런스의 기능 플래그 목록을 참고하세요.
더 알아보기
- Compose 컴파일러 마이그레이션 가이드 — Kotlin 2.0.0 이상으로 옮길 때 Compose 컴파일러를 관리하는 방법
- Gradle에서 프로젝트 구성하기 — Gradle 플러그인 설정 기초