Android

Groovy DSL 을 Kotlin DSL 로 바꿔보기

최데브 2022. 2. 9. 23:47

이것도 Dev6 팀에서 안드로이드분이 알려주신거다..

아직 이 분이 알려주신거에 대한 포스팅이 하나 더 있다 ㅎㅎㅎ

혼자서 생존하던 안드개발자에게 새로운 방안을 제시해주셔서 감사하게 생각하고 있다.

 

먼저 나는 프로젝트를 생성했을때 나오는 build.gradle 이 Groovy 방식으로 되어있다는 사실 조차도 몰랐다.

이걸 찾아보면서 알게 됐는데 

 

Kotlin DSL 로 왜 바꿔야하는가 부터 설명하자면

  • 컴파일 타임에 에러 확인
  • 코드 탐색
  • 자동 완성
  • 구문 강조
  • IDE의 지원으로 향상된 편집환경
  • 소스코드와 동일한 언어의 사용

의 장점이 있다고 한다.

 

하지만 장점만 있는건 이 세상에 없지.

단점도 존재한다.

 

https://developer.android.com/studio/build/migrate-to-kts?hl=ko 

 

Groovy에서 KTS로 빌드 구성 이전  |  Android 개발자  |  Android Developers

Gradle 구성 파일을 Groovy에서 KTS로 이전합니다.

developer.android.com

여기에도 적혀있듯 빌드속도가 느려진다고 한다.


그러나 나는 Kotlin DSL  로 바꾸고 싶다! 바꿔보자.

 

먼저 build.gradle 을 build.gradle.kts 로 변경해줘야한다.

이 build.gradle.kts 은 내가 전 포스팅에 적어둔것과는 다른 파일이다.

전에 만들어준 build.gradle.kts 는 root 폴더에서 만든 buildSrc안에 있는 gradle 파일이였고

여기서 바꿔줄 build.gradle.kts 는 app 단의 build.gradle을 바꿔주는거다.

 

그리고 플러그인 블럭부터 바꿔보자.

 

Groovy DSL

// Groovy DSL 
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
}

 Kotlin DSL

plugins {
    id("com.android.application")
    kotlin("android")
    kotlin("kapt")
}

사실 모양(?)이 조금 바뀌었을뿐 크게 달라진건 없다.

 

다음은 안드로이드 블럭이다.

 

android {
    compileSdkVersion(Versions.COMPILE_SDK_VERSION)
    buildToolsVersion = Versions.BUILD_TOOLS_VERSION

    defaultConfig {
        applicationId = "com.supremehyo.multitest"
        minSdkVersion(Versions.MIN_SDK_VERSION)
        targetSdkVersion(Versions.TARGET_SDK_VERSION)
        vectorDrawables.useSupportLibrary = true
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        getByName("release") {
            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 (Kotlin.KOTLIN_STDLIB)

    implementation (AndroidX.CORE_KTX)
    implementation (AndroidX.APP_COMPAT)

    implementation (Google.MATERIAL)

    testImplementation (UnitTest.JUNIT)

    androidTestImplementation (AndroidTest.ANDROID_JUNIT)
    androidTestImplementation (AndroidTest.ESPRESSO_CORE)
}

전 buildSrc 를 사용한 부분과 Kotlin DSL 을 합쳐서 만들어봤다. 

 

정상적으로 빌드도 된다!

 

좀 더 제대로 된 프로젝트 관리에 가까워지는 기분이 든다 ㅎㅎ

 

반응형