이제 실제 개발을 진행해보자.
첫 포스팅에서 언급한대로 기본 프레임워크에 간단한 데모 기능을 넣고자 한다.
위와 같은 기능들을 구현하기 위한 build-logic 을 만들어보자.
build-logic 에 어떤 plugin을 세팅해야할까? 하나씩 추가해보자.
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
}
위 기본 라이브러리들을 build-logic 형태로 변형시켜보자. 그리고 그 이후 필요한 기능별로 한가지씩 추가하기로 한다.
일단 build-logic 모듈을 생성한다.
Project-Root
├── build-logic (폴더)
│ ├── convention (폴더 - 여기에 실제 플러그인 코드가 들어감)
│ │ ├── src/main/kotlin (폴더)
│ │ └── build.gradle.kts (파일 - build-logic 자체 설정)
│ └── settings.gradle.kts (파일 - build-logic 설정)
├── gradle (기존 폴더)
│ └── libs.versions.toml (기존 파일)
├── settings.gradle.kts (루트 설정 파일)
└── ... (app 모듈 등)
// 루트 settings.gradle.kts
pluginManagement {
includeBuild("build-logic") // build-logic 폴더를 빌드 프로세스에 포함시킴
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
build-logic 자체의 빌드 설정 을 진행한다.
// build-logic/settings.gradle.kts
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml")) // 루트의 TOML 파일을 공유
}
}
}
rootProject.name = "build-logic"
include(":convention")
plugins {
`kotlin-dsl`
}
group = "com.yourproject.buildlogic" // 적절한 패키지명 설정
dependencies {
compileOnly(libs.android.gradlePlugin)
compileOnly(libs.kotlin.gradlePlugin)
}
[versions]
androidGradlePlugin = "8.2.0" # 현재 프로젝트의 AGP 버전
kotlin = "1.9.0"
[libraries]
# 커스텀 플러그인 제작 시 참조할 AGP와 Kotlin 플러그인
android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" }
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
[plugins]
# ... 기존 플러그인들 ...
build.gradle.kts 에서 libs.versions.toml 의 android-gradlePlugin 으로 연결되는 것을 확인했다. 여기까지 build-logic 의 기본 세팅을 마쳤다.
다음에는 build-logic 에 compose 나 room 같은 추가 라이브러리 플러그인들을 추가해보도록 하자.