오늘은 안드로이드 프로젝트의 빌드 관리를 더 효율적으로 만들어주는 핵심 도구, build-logic에 대해 알아보겠습니다
build-logic이란?
공통된 빌드 설정을 한 곳에 모아 플러그인 형태로 정의하고,
각 모듈에서 간단하게 재사용할 수 있도록 만든 구조
build-logic을 사용하는 이유
- 반복되는 설정을 제거해 코드 간결하게 해준다.
- 설정 일관성있게 유지해서 버그 감소시킨다
- 모듈 추가 시 빠르고 쉽게 설정 가능하다.
- 빌드 스크립트 가독성 향상된다.
프로젝트 구조 예시
root/
├── build-logic/
│ └── convention/
│ ├── build.gradle.kts
│ └── src/main/java/com/school_of_company/convention/
│ ├── AndroidApplicationConventionPlugin.kt
│ ├── AndroidComposeConventionPlugin.kt
│ ├── AndroidCoreConventionPlugin.kt
│ ├── AndroidFeatureConventionPlugin.kt
│ ├── AndroidHiltConventionPlugin.kt
│ ├── AndroidLintConventionPlugin.kt
│ └── JvmLibraryConventionPlugin.kt
├── app/
├── core/
├── features/
└── settings.gradle.kts
Convention Plugin 적용 방식
settings.gradle.kts
pluginManagement {
includeBuild("build-logic")
}
모듈에서 사용
```
// 예: feature 모듈의 build.gradle.kts
plugins {
id("com.school_of_company.convention.android.feature")
id("com.school_of_company.convention.android.compose")
id("com.school_of_company.convention.android.hilt")
}
```
주요 플러그인 설명
AndroidApplicationConventionPlugin
com.android.application 플러그인 적용
앱 모듈에 필요한 compileSdk, defaultConfig, viewBinding 등 기본 설정 포함
AndroidComposeConventionPlugin
Jetpack Compose 관련 설정 일괄 적용
AndroidFeatureConventionPlugin
기능(feature) 모듈을 위한 설정
보통 android-library, viewBinding 등 적용
composeOptions {
kotlinCompilerExtensionVersion = "1.4.3"
}
AndroidCoreConventionPlugin
공통 설정: Kotlin, Java version, warning 설정 등
모든 모듈에 적용 가능한 기본 설정들 포함
AndroidHiltConventionPlugin
DI 프레임워크 Hilt 설정 자동화
Hilt 플러그인 적용, 의존성 추가, kapt 설정 포함
dependencies {
implementation("com.google.dagger:hilt-android:2.48")
kapt("com.google.dagger:hilt-compiler:2.48")
}
AndroidLintConventionPlugin
Lint 설정 일괄 적용
빌드 품질 유지 및 자동 점검 목적
JvmLibraryConventionPlugin
순수 Kotlin(JVM) 라이브러리 모듈용
Java 버전 설정, kotlin("jvm") 플러그인 등 적용
'android' 카테고리의 다른 글
Android Module & Multi-Module (0) | 2025.04.29 |
---|---|
Android clickable (0) | 2025.04.25 |
Android Okhttp (0) | 2025.04.08 |
Android Interceptor (0) | 2025.04.01 |
Android UiState (0) | 2025.03.25 |