Gradle 버전 카탈로그 통합

11333 단어 androidgradlekotlin
이 게시물은 다른 게시물의 연속이므로 이 게시물을 보기 전에 해당 게시물을 읽는 것이 좋습니다. 당신은 그것을 찾을 수 있습니다

버전 무엇?




Gradles 버전 카탈로그는 프로젝트 종속성, 플러그인 및 해당 버전을 단일 위치로 중앙 집중화할 수 있는 최신 Gradle 버전의 새로운 기능입니다. (하나 이상을 가질 수는 있지만).

둘 이상의 모듈이 있는 프로젝트로 작업한 경우 모든 모듈에서 모든 종속성을 정렬 상태로 유지하는 데 어려움을 겪을 것입니다. 버전 카탈로그 도입 이전의 솔루션은 build.gradle 파일에서 참조할 수 있는 특수 Gradle buildSrc 폴더 내에 파일을 생성하는 것이었습니다. 이 접근 방식에 크게 잘못된 것은 없지만 Gradle은 버전 카탈로그를 지지하며 특정 조건에서 활용할 수 있는 몇 가지 추가 이점이 있습니다.

예를 들어 큰 프로젝트에서 큰 팀에서 일하고 본질적으로 동일한 응용 프로그램에 대한 모듈인 여러 리포지토리가 있다고 상상해 보십시오. 각 리포지토리에 다른 카탈로그를 갖는 대신 Maven과 같은 리포지토리에 카탈로그를 게시하고 각 리포지토리에서 사용하여 별도의 리포지토리에도 종속성이 정렬되도록 할 수 있습니다. 이에 대해 자세히 알아볼 수 있습니다here.

좋아, 충분히 스필, 어떻게 생겼는지 보자




카탈로그는 toml이라는 구성 언어로 작성되었으며 섹션을 보여주기 위해 아래에 구현을 축소했습니다.

build.gradle




[versions]

compileSdk = "31"
minSdk = "23"
targetSdk = "31"

appVersionCode = "1"
appVersionName = "1.0"
applicationId = "com.x.y"

kotlin = "1.5.31"
android-build-tools-plugin = "7.1.0"

hilt-core = "2.40.5"
hilt-integrations = "1.0.0"

[plugins]

plugin-kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
plugin-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
plugin-android = { id = "com.android.application", version.ref = "android-build-tools-plugin" }
plugin-android-lib = { id = "com.android.library", version.ref = "android-build-tools-plugin" }

[libraries]

hilt-core = { module = "com.google.dagger:hilt-android", version.ref = "hilt-core"}
hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt-core"}
hilt-integrations-work = { module = "androidx.hilt:hilt-work", version.ref = "hilt-integrations"}
hilt-integrations-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hilt-integrations"}
hilt-integrations-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hilt-compose"}


[bundles]

hilt-deps = [ "hilt-core", "hilt-integrations-work", "hilt-integrations-compose" ]
hilt-compilers = [ "hilt-compiler", "hilt-integrations-compiler" ]



그것은 달라




하지만 높은 수준에서는 매우 간단하며 4개의 섹션이 있습니다.
  • 버전 선언을 위한 섹션
  • 플러그인 선언 섹션
  • 라이브러리 선언을 위한 섹션
  • 번들 선언을 위한 섹션(기본적으로 라이브러리의 논리적 그룹)

  • 이 파일을 프로젝트의 최상위 gradle 폴더에 저장하면 사용할 준비가 된 것입니다.

    다른 섹션을 참조하는 방법




    플러그인의 경우



    이전 기사에서 설명한 대로 클래스 경로에 로드할 때 참조할 수 있습니다.

    다음과 같습니다.

    build.gradle




    plugins {
        alias(libs.plugins.plugin.kotlin.android) apply false
    }
    


    적용 거짓을 기억하십시오. 여기에 적용하고 싶지는 않습니다. 필요한 각 모듈에 각각 적용해야 합니다.

    별칭 표기법을 사용하여 모듈 내부에 적용하려면 현재 rc-01에 있는 Gradle 7.4가 필요합니다. 일찍 업그레이드하려는 경우 이를 수행할 수 있습니다.

    앱/빌드.gradle




    plugins {
        alias(libs.plugins.plugin.android) 
    }
    


    기본값은 적용이므로 적용하지 않을 때 해당 모듈에 플러그인을 적용합니다.

    업그레이드할 위치에 있지 않고 Gradle 버전 < 7.4인 경우 다음을 수행할 수 있습니다.

    앱/빌드.gradle




    plugins {
        id "org.jetbrains.kotlin.android"
    }
    


    버전용



    개별 버전은 build.gradle 파일에서 참조할 수 있으며 다음과 같은 작업을 수행할 수 있습니다.

    앱/빌드.gradle




    android {
    
        compileSdkVersion libs.versions.compileSdk.get() as Integer
    
        defaultConfig {
            applicationId libs.versions.applicationId.get()
            minSdkVersion libs.versions.minSdk.get() as Integer
            targetSdkVersion libs.versions.targetSdk.get() as Integer
            versionName libs.versions.appVersionName.get()
            versionCode libs.versions.appVersionCode.get() as Integer
        }
    ...
    


    도서관용



    라이브러리의 경우 똑같이 간단합니다.

    앱/빌드.gradle




    dependencies {
        implementation libs.material
    }
    


    번들용



    번들은 다음과 같이 구현할 수 있는 번들과 유사하게 관련 종속성을 그룹화하고 줄 공간을 절약하는 좋은 방법을 제공합니다.

    앱/빌드.gradle




    dependencies {
        implementation libs.bundles.hilt.deps
        kapt libs.bundles.hilt.compilers
    }
    


    지느러미



    다음으로 미리 컴파일된 Gradle 스크립트 플러그인을 사용하여 Gradle 파일을 정리하는 방법을 살펴보겠습니다.

    좋은 웹페이지 즐겨찾기