본문 바로가기
안드로이드/공부 및 정리

[Android]Kotlin-DSL와 VersionCatalog

by 디선 2024. 10. 1.

Kotlin-DSL을 사용한 Android Studio 프로젝트 설정

Android Studio에서 Kotlin-DSL을 사용법을 간단히 설명한다.


Kotlin-DSL이란?

DSL은 Domain Specific Language도메인 특화 언어 라는 뜻이며, Kotlin-DSL은 Kotlin 언어로 작성된 DSL이다.
Gradle 스크립트는 Groovy로 작성되지만, Kotlin-DSL을 사용하면 Kotlin 언어로 작성된다.

  • 장점
    • 코드를 강조할 수 있다.
    • 자동완성이 지원된다.
    • 오류 코드가 강조된다.
    • 변수 리팩토링이 가능한 향상된 편집환경을 지원한다
    • 멀티 모듈 사용 시 중복 의존성 선언이 필요가 없다

1. 프로젝트 설정

1.1. settings.gradle.kts (Kotlin-DSL) vs settings.gradle (Groovy)

Kotlin-DSL

pluginManagement { 
    repositories { 
        gradlePluginPortal()
        google()
        mavenCentral() 
    }
}

Groovy

pluginManagement {  
    repositories {  
        gradlePluginPortal()  
        google()  
        mavenCentral()  
    }  
}

1.2 build.gradlt.kts (Kotlin-DSL) vs build.gradlt.kts (Groovy)

Kotlin-DSL

plugins { 
    id("plugin") 
}

android {
    compileSdk = 33

    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 21
        targetSdk = 33
        versionCode = 1
        versionName = "1.0"
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }

    compileOptions {  
        sourceCompatibility JavaVersion.VERSION_1_8  
        targetCompatibility JavaVersion.VERSION_1_8  
    }  

    kotlinOptions {  
        jvmTarget = '1.8'  
    }
}

dependencies {
    implementation("dependency:X.X.X")
}

Groovy

plugins {  
    id 'plugin'  
}

android {
    compileSdkVersion 33

    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        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 = "1.8"  
    }
}

dependencies {
    implementation "dependency:X.X.X"
}

2. Version Catalog

Gradle 7.0부터 도입된 Version Catalog는 의존성, 플러그인 및 버전 관리의 통합을 돕는 기능이다.
이를 사용하면 의존성 버전을 한 곳에서 관리할 수 있어 더욱 일관성 있는 프로젝트 관리를 할 수 있다.

2.1 libs.versions.toml 파일 설정

Version Catalog는 gradle/libs.versions.toml 파일을 통해 관리된다.

libs.versions.toml

[versions]
kotlin = "1.6.10"
android-gradle-plugin = "7.0.3"
core-ktx = "1.7.0"

[libraries]
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
androidx-core = { module = "androidx.core:core-ktx", version.ref = "core-ktx" }

[plugins]
android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

2.2 Version Catalog를 사용한 build.gradle.kts (Kotlin-DSL) vs build.gradle (Groovy)

Kotlin-DSL:

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
}

android {
    compileSdk = 33
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 21
        targetSdk = 33
        versionCode = 1
        versionName = "1.0"
    }
}

dependencies {
    implementation(libs.kotlin.stdlib)
    implementation(libs.androidx.core)
}

Groovy:

plugins {
    id(libs.plugins.android.application)
    id(libs.plugins.kotlin.android)
}

android {
    compileSdkVersion 33
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"
    }
}

dependencies {
    implementation(libs.kotlin.stdlib)
    implementation(libs.androidx.core)
}

3. Version Catalog 장점

  • 중앙화된 버전 관리: 모든 라이브러리와 플러그인의 버전을 한 곳에서 관리하여 프로젝트의 의존성 관리를 쉽게 할 수 있다.
  • 재사용성: 여러 프로젝트에서 같은 버전 카탈로그를 사용하여 일관성을 유지할 수 있다.
  • 가독성: build.gradle.ktsbuild.gradle 파일이 더 간결해지고, 중요한 의존성 정보는 분리되어 관리된다.
반응형