-
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로 인식한다.
이런식으로 전체적으로 에러가 생기게 되는데 침착하게 하나하나 바꿔나가면 된다.
바꿀 때 IDE의 도움을 받아서 ' ' 사이를 드래그 한 뒤 (" 순으로 입력해서 글자를 치환하면 좀 더 쉽다. 먼저 아래 내용을 주석처리하고 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