포스팅 환경
- M1 Mac OS Ventura 13.4.1
- Android Studio Giraffe | 2022.3.1 Patch 1 (ARM)
- Gradle 8.2
- Android Build Gradle 8.2.2
- Kolin 1.9.22
- Target SDK 33
기존 추가 방식
기존 Gradle 7.2 이하 버전에서는 새 프로젝트를 생성하면
아래와 같은 구조가 생성되었습니다.
build.gradle(project)
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
...
classpath "org.jetbrains.kotlin:kotlin-serialization:1.9.22"
...
}
}
allprojects {
repositories {
google()
mavenCentral()
maven { url '<https://jitpack.io>'}
}
}
플러그인을 추가할 때는 기존에 classpath 형태로 의존성을 추가하고
플러그인을 사용해줄 모듈에 플러그인 구문과 의존성 구문을 추가하는 형태였었습니다.
build.gradle(app)
plugins {
id 'org.jetbrains.kotlin.plugin.serialization'
}
...
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
}
정리하자면 classpath, plugin, implementation 3가지의 구문을 추가하여야 의존성을 모듈에 추가할 수 있었습니다.
하지만 7.2 이상이 되고 부터는 추가하는 형태가 변경 되었습니다.
Gradle 7.2 이상 추가 방식
플러그인, 의존성 추가
Gradle 7.2 이상 부터는 플러그인과 의존성 추가가 아래와 같이 변경되었습니다.
build.gradle(project)
plugins {
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.22' apply false
}
build.gradle(app)
plugins {
id 'org.jetbrains.kotlin.plugin.serialization'
}
...
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
}
project level 의 gradle 에 plugin 을 명시해주고
app level 의 gradle 에 plugin 을 명시하면 의존성이 추가 됩니다.
정리하자면 plugin, implementation 구문만 추가하면 손쉽게 의존성을 추가할 수 있도록 변경되었습니다.
저장소 추가
저장소의 경우 setting.gradle 파일에서 추가하도록 변경되었습니다.
기존
build.gradle(project)
buildscript {
repositories {
google()
mavenCentral()
// 새 저장소
maven { url '<https://jitpack.io>'}
}
dependencies {
...
classpath "org.jetbrains.kotlin:kotlin-serialization:1.9.22"
...
}
}
allprojects {
repositories {
google()
mavenCentral()
// 새 저장소
maven { url '<https://jitpack.io>'}
}
}
변경
setting.gradle
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
// plugin 관련 저장소 추가
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// 의존성 관련 저장소 추가
maven { url '<https://jitpack.io>'}
}
}
rootProject.name = "appname"
include ':app'
변경 된 구조를 살펴보면 pluginManagement 와 dependencyResolutionManagement 가 눈에 들어오는데
각각은 플러그인 전용 저장소와 의존성 저장소를 추가하는 영역으로 변경되었습니다.
더 간단하게 변경되었다고 볼 수 있습니다.
이상으로 포스팅을 마치겠습니다.
감사합니다. :)
'Develop > Android' 카테고리의 다른 글
[Android] SDK 33 이상에서 PackageInfo 가져오기 (0) | 2024.02.26 |
---|---|
[Android] 기기 화면 회전에 따른 Activity, Fragment 대응 전략 (0) | 2024.02.10 |
[Android] - Gradle Dependency 최신 버전 쉽게 확인하기 (0) | 2022.10.21 |
[Android] - 코드로 기기 화면 켜지게 하기 (0) | 2022.10.18 |
[Android] - Assets 내부의 파일 접근하기 (0) | 2022.09.23 |