Android Studio

[Android] buildSrc, kotlin DSL 적용해보기 (2)

혁준 2022. 10. 27. 16:59

https://hugjune.tistory.com/51

 

[Android] buildSrc, kotlin DSL 적용해보기

안드로이드 스튜디오에서 코드를 작성하면서, 많은 이들이 kotlin을 활용하고 있습니다. 그렇지만 특별한 설정 없이 안드로이드 스튜디오를 시작하면, build.gradle 에서는 kotlin을 사용할 수 없습니

hugjune.tistory.com

위 글과 이어지는 글입니다. 

 

이전 글에서는 buildSrc 폴더 및 build.gradle.kts를 생성해주었습니다. 

이후 추가적인 설명이 더 필요하다고 생각되어 글을 작성하게 되었습니다. 

 


 

plugins {
    `kotlin-dsl`
}

repositories {
    google()
    mavenCentral()
}

이전 글에서 생성한 build.gradle.kts에 위의 코드를 추가해주세요! 

( * 위의 build.gradle.kts 은 buildSrc 내부에 있습니다. )

 

이후에 buildSrc 파일을 우측 클릭한 후 'New - Directory' 를 누르면 'src/main/kotlin' 파일을 만들 수 있습니다. 

여기에서 Dependency.kt 파일을 생성합니다. 

 

**요 파일에서 버전을 관리해줄 수 있습니다!!**

 

object Dependency {

    object Kotlin {
        const val SDK = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.21"
    }

    object AndroidX {
        const val MATERIAL = "com.google.android.material:material:1.6.1"
        const val CONSTRAINT_LAYOUT = "androidx.constraintlayout:constraintlayout:2.1.4"
        const val APP_COMPAT = "androidx.appcompat:appcompat:1.5.1"
    }

    object KTX {
        const val CORE = "androidx.core:core-ktx:1.7.0"
    }

    object Test {
        const val JUNIT = "junit:junit:4.13.2"
        const val ANDROID_JUNIT_RUNNER = "AndroidJUnitRunner"
    }

    object AndroidTest {
        const val TEST_RUNNER = "androidx.test.ext:junit:1.1.3"
        const val ESPRESSO_CORE = "androidx.test.espresso:espresso-core:3.4.0"
    }
}

위와 같은 형식으로 작성해주시고, 라이브러리를 추가 및 수정하는 경우, 이곳에서 버전 관리를 해주면 됩니다.

 

이제 기존의 build.gradle 을 build.gradle.kts 를 붙여준 후에 build.gradle.kts 에 맞는 문법으로 수정을 해주어야 합니다. 

 

1. settings.build.gradle.kts

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "My Application2"
include(":app")

rootProject.name 에는 본인 프로젝트의 이름을 넣어주시면 됩니다

* 추가적으로 multi module을 진행할 때에 include 에 생성하는 모듈을 추가해주면 됩니다  :) 

 

 

2. build.gradle.kts (프로젝트)

plugins {
    id("com.android.application") version "7.3.0" apply false
    id("com.android.library") version "7.3.0" apply false
    id("org.jetbrains.kotlin.android") version "1.7.10" apply false
}

tasks.register("clean", Delete::class) {
    delete(rootProject.buildDir)
}

여기에서 버전은 사용자의 버전에 따라 수정해주면 됩니다.

 

3. build.gradle.kts (모듈) 

 

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

android {
    namespace = "com.example.myapplication2"
    compileSdk = 32

    defaultConfig {
        applicationId = "com.example.myapplication2"
        minSdk = 24
        targetSdk = 32
        versionCode = 1
        versionName = "1.0"

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

    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.KTX.CORE)
    implementation(Dependency.AndroidX.APP_COMPAT)
    implementation(Dependency.AndroidX.MATERIAL)
    implementation(Dependency.AndroidX.CONSTRAINT_LAYOUT)
    testImplementation(Dependency.Test.JUNIT)
    androidTestImplementation(Dependency.AndroidTest.TEST_RUNNER)
    androidTestImplementation(Dependency.AndroidTest.ESPRESSO_CORE)
}

 

여기까지 작성을 해주면 끝입니다..! 

 

 

 

build.gradle 에서 build.gradle.kts로 변환된 것을 확인할 수 있습니다. 

 

 


참고자료 

https://patrick-dev.tistory.com/m/53

 

Kotlin DSL & BuildSrc 사용해보자

DSL(Domain Specific Language)이란 도메인 특화 언어로, 특정한 도메인에 사용하는데 특화된 컴퓨터 언어입니다. 기존의 Groovy 대신 Kotlin DSL을 사용하면 코드 하이라이팅, 자동완성, 문법 검사 등 IDE에서

patrick-dev.tistory.com