-
Kotlin-DSL을 활용하여 Dependency 관리하기 - (1)안드로이드 2021. 5. 16. 18:19
Groovy를 활용해서 Dependency를 관리하는 방법은 흔히 알려져있고 자료도 많이 존재합니다.
Kotlin-DSL-Gradle을 설정하는 방법을 작성하고
이를 활용해서 Dependency를 관리하는 방법을 소개하려고 합니다.
일반적인 Groovy를 활용해서 Dependency를 관리하는 프로젝트 예시는 링크를 통해 확인할 수 있습니다.
Kotlin-DSL을 활용하여 Dependency 관리하기 - (2)
Kotlin-DSL 이란?
Kotlin 기반의 Domain Specific Languages 으로 특정 목적에 맞게 작성되는 언어 방식을 말한다.
data class Coffee( var been: String = "Arabica", var isWater: Boolean = false ) fun makeCoffee(recipe: Coffee.() -> Unit): Coffee { val p = Coffee() recipe(p) return p } fun main() { val person = makeCoffee { been = "Robusta" isWater = true } println(person) }
main 함수의 makeCoffee처럼 Coffee 객체 생성이라는 목적을 위해서 작성되는 이러한 영역의 문법 방식을
Kotlin-DSL 이라고 부르는데, makeCoffee 내부에 코드를 선언하듯 작성할 수 있는 장점이 있다.
이러한 문법적 특성을 이용해서 Gradle을 Kotlin으로 작성해보자
kts 파일로 변환 해보기
설정하는 방법은 생각보다 간단하다.
우선 파일명을 변경해준다.
build.gradle (:app) -> build.gradle.kts (:app)
파일명을 변경하고 나면 자연스럽게 IDE가 Kotlin Gradle로 인식한다.
이런식으로 전체적으로 에러가 생기게 되는데 침착하게 하나하나 바꿔나가면 된다.
먼저 아래 내용을 주석처리하고 plugins 내부를 수정해준 다음 'sync now' 한다.
그러면 이제 android 관련된 gradle을 작성할 수 있게 된다.
변경하는 요령은 간단하다 compileSdkVersion과 같은 속성 이름을 작성한 후
자동완성을 통해서 알려주는 프로퍼티나 함수를 사용해서 그대로 옮겨주면 된다.
// build.gradle.kts (:app) plugins { id("com.android.application") id("kotlin-android") } android { compileSdkVersion(29) buildToolsVersion("29.0.3") defaultConfig { applicationId = "com.munny.kotlindslsample" minSdkVersion(23) targetSdkVersion(29) versionCode(1) versionName("1.0") testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { getByName("release") { minifyEnabled(false) proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() } } dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.72") implementation("androidx.core:core-ktx:1.3.2") implementation("androidx.appcompat:appcompat:1.2.0") implementation("com.google.android.material:material:1.3.0") implementation("androidx.constraintlayout:constraintlayout:2.0.4") testImplementation("junit:junit:4.+") androidTestImplementation("androidx.test.ext:junit:1.1.2") androidTestImplementation("androidx.test.espresso:espresso-core:3.3.0") }
작성된 gradle 파일은 위와 같다.
id("kotlin-android") 와 같은 kotlin이 앞에 붙어있는 plugin id는 kotlin("android") 와 같이 작성할 수 있으며
id("kotlin-kapt")도 마찬가지로 kotlin("kapt") 처럼 작성 할 수 있다.
project 레벨의 gradle도 동일한 방식으로 변경 해주면 된다.
여기까지가 Kotlin-DSL을 이용해서 코드를 작성하기 위한 설정을 하는 기본 코드였고
다음 포스팅에 이를 활용해서 Dependency 코드를 관리하는 방법을 작성하려 한다.
만약 파일을 수정하기 어려운 상황이라면 기존의 gradle 파일을 그대로 둔 채로
gradle.kts 파일을 새로 만들어도 상관 없다.
반응형'안드로이드' 카테고리의 다른 글
[Android/Retrofit] 204 응답에 NPE 발생할 때 대처법 (0) 2024.02.04 [Android/WebView] 안드로이드에서 WebView의 함수 호출하기 (0) 2022.01.06 [Compose] Material ImageVector로 Icon 사용하기 (0) 2021.12.27 Kotlin-DSL을 활용하여 Dependency 관리하기 - (2) (1) 2021.05.17 [Android/Kotlin] Multi-ViewType을 사용하는 RecyclerView의 구조를 추상화 해보기 (0) 2021.04.04