
이전 글에서 클린 아키텍처 채택하고 모듈화에 대해서 작성을 하였습니다. 모듈화는 너무 세분화하지 않고 클린 아키텍처에 필수적으로 존재해야 하는 data, domain, presentation 계층만 생성하기로 하였습니다.
모듈을 생성하게 되면 각 모듈별로 빌드 관리를 위한 build.gradle 파일들이 생성되고 각 모듈에 필요한 플러그인, 라이브러리 등 정보들을 작성하게 됩니다.
모듈별로 빌드 스크립트를 각각 작성하고 유지보수 하기보다는 buildSrc 를 통해 더 쉽고 유지보수가 쉽도록 빌드 스크립트를 작성할 수 있습니다. 😎
요즘 안드로이드 스튜디오에서 새로운 프로젝트를 생성하면 build.gradle이 아닌 build.gradle.kts가 생성될 수 있도록 체크하는 것이 있습니다. 기존에 빌드 스크립트는 Groovy라는 언어로 작성을 했으며 문제 없이 사용하였습니다. 하지만 kotlin DSL을 통해 빌드 스크립트를 작성했을 때의 여러 장점이 존재하면서 구글에서도 채택을 하게 되었습니다.
Kotlin DSL은 Koltin으로 작성된 도메인 특화 언어로 Gradle, Android 등 여러 영역에 사용되며 정적 타입 검사, 람다 함수, 확장 등 kotlin의 언어의 장점을 살려 직관적인 DSL을 구축할 수 있습니다.
android {
compileSdkVersion 34
defaultConfig {
applicationId "com.example.ows"
minSdkVersion 26
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
// ...
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.10.0'
}
android {
compileSdkVersion(34)
defaultConfig {
applicationId = "com.example.ows"
minSdkVersion(26)
targetSdkVersion(34)
versionCode = 1
versionName = "1.0"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
// ...
}
dependencies {
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.10.0")
}
Groovy 코드를 kotlin DSL로 변경하여 작성하였습니다.
Groovy로 잘 쓰고 있던 빌드 언어를 Kotlin DSL로 변경했기에 장점이 있다고 생각할 수 있을 것입니다. 사실 제 입장에서 Groovy를 많이 써보지 않았기에 오히려 Kotlin DSL로 바꿨을 때 더 익숙하여서 좋았지만, Kotlin DSL을 새롭게 공부를 해야하는 상황이신 분들에게는 굳이 꼭 해야되나 싶을 수 있을 것 같습니다.
간결하고 가독성 높은 코드
Kotlin 언어의 특징으로 간결하고 가독성이 높은 코드를 작성할 수 있다고 하지만, Groovy에 더 익숙하진 분들에게는 매력적인 이득은 아닐 것 같긴하네요
타입 안정성
이부분이 Kotlin의 장점이지 않을까 싶습니다. Kotlin으로 빌드 스크립트를 작성하게 되면 빌드를 하기 전 컴파일 시점에 IDE가 오류를 발견하여 수정할 수 있도록 도와줍니다. Groovy에서는 String 형을 입력해야 하는데 Int 타입을 입력했을 때 오류를 나타내주지 않지만, Kotlin DSL 은 미리 알려주어서 오류를 잡을 수 있습니다.
유연성과 확장성
Kotlin은 객체지향 프로그래밍과 함수형을 모두 지원하기에 유연하고 확장이 용이한 구조로 작성할 수 있습니다.😘
buildSrc는 모듈화로 인한 여러 빌드 스크립트를 쉽고 유지보수를 용이하게 할 수 있도록 하는 방법 중 하나입니다. buildSrc 말고도 version catalog를 사용하거나 kotlin convention plugin을 적용해볼 수도 있지만 그나마 간단한 buildSrc를 BuddyCon 프로젝트에 적용을 하였습니다.
다른 프로젝트에 version catalog와 kotlin convention plugin을 사용했기에 나중에 블로그에 포스팅 해보도록 하겠습니다. 🤗
백문이 불여일견! buildSrc를 적용하는 방법에 대해 작성해보겠습니다.




Kotlin DSL + buildSrc 를 적용하여 모듈별로 빌드 스크립트 관리의 효율성을 높였으며 Groovy가 익숙하지 않는 저에게 Kotlin DSL을 사용하여 조금 더 친숙함을 느낄 수는 있었던 것 같습니다.
요즘 트렌드는 Version Catalog를 사용하거나 Kotlin Convention Plugin 을 하지만 프로젝트 규모 및 인지 부하가 너무 크지 않는 선에서 선택해도 무방할 것 같습니다! 😎