toml 파일을 사용하게 된 계기
이번 신규 프로젝트를 진행하게 되었는데,
그에 따라 프로젝트 자체를 새로 생성하면서 build.gradle 언어를 Kotlin DSL로 설정했더니
Android Studio Koala를 쓰는 나에게 toml이 포함된 프로젝트가 생성되었다.
여기저기 오픈소스 라이브러리에서 혹은 developer 사이트에서도 자주 볼 수 있는 녀석이라
이번 기회에 써보기로 했다.
Retrofit 추가해보기
어차피 대부분 앱은 네트워크 작업이 필요하고 그에 따라 가장 대중적인 라이브러리는 단연 Retrofit일 것이다.
하지만, 기존 toml을 사용해본적 없는 나로서는 상당히 검색할 시간이 필요했다.
먼저 toml 파일 수정하기
[versions]
... //
retrofit = "2.11.0"
serialization = "1.7.3"
serializationConverter = "1.0.0"
scalarsConverter = "2.9.0"
loggingInterCeptor = "4.12.0"
kotlinxSerialization = "2.0.20"
... //
[libraries]
... //
retrofit-core = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" }
serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "serialization" }
retrofit-serialization-converter = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "serializationConverter" }
retrofit-scalars-converter = { group = "com.squareup.retrofit2", name = "converter-scalars", version.ref = "scalarsConverter" }
retrofit-logger = { group = "com.squareup.okhttp3", name = "logging-interceptor", version.ref = "loggingInterCeptor" }
... //
[bundles]
retrofit = [
"retrofit-core",
"serialization",
"retrofit-serialization-converter",
"retrofit-scalars-converter",
"retrofit-logger",
]
[plugins]
... //
kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinxSerialization" }
우리가 익숙하게 사용했던 implementation 'com.squareup.retrofit2:retrofit:1.0.0' 형식으로
개별 아티팩트를 명시했던 것을 toml 파일의 versions에 해당 버전만 따로 명시한다.
그리고 libraries에서 해당 dependency 표기를 나누어 적어주면 된다.
다음은 bundles인데 여기서 여러 dependency를 한번에 묶어서 관리할 수 있다.
또한, 묶어서 app 모듈에서 가져다 쓰는 것도 가능하다.
이제 plugins에 대한 소개가 남았다.
여기는 기존 project 수준의 build.gradle에서 plugins 블럭의 내용을 그대로 옮겼다고 할 수 있다.
원래 id("org.jetbrains.kotlin.plugin.serialization") version "1.0.0" apply false와 같은 형식을 옮기며
app 수준 build.gradle에서 kotlinx-serialization으로 가져다 쓸 수 있다.
app 수준 build.gradle에 추가하기
plugins {
... //
alias(libs.plugins.kotlinx.serialization)
}
...//
dependencies {
... //
implementation(libs.bundles.retrofit)
}
먼저 plugins 블럭을 보자.
alias라는 키워드로 추가할 수 있고
toml 파일에서 kotlinx-serialization으로 선언해둔 이름은 "-"가 "."으로 변환되었다.
dependencies 블럭에서도 같은 패턴으로 toml에 명시한 내용을 가져올 수 있다.
내 경우에는 retrofit 번들 자체에 구분자가 없기에 보이지 않겠지만 말이다.
마무리
toml 파일 먼저 떠올려보면 versions에서 정말 버전을 명시,
libraries에서 group, name, version.ref를 구분하여 명시,
bundles로는 각 라이브러리를 묶을 수 있고 plugins도 project 수준 build.gradle과 거의 같은 느낌이다.
이렇게 돌아보면 딱히 어려운 점은 없다.
하지만, 이런 형식을 처음 접한 나에게는 매우 생소한 경험이었다.
다른 프로젝트에서 toml을 사용하는 경우에 읽는 시간이 단축될 것이라 생각한다.
'Android' 카테고리의 다른 글
Android Share Image File In 2way (0) | 2025.01.01 |
---|---|
Android QR Code Generation (0) | 2024.11.26 |
Android Watchdog 기능 추가하기(OS 9) (0) | 2024.11.25 |
Android Phone Number Format(자동 하이픈 추가) (0) | 2024.11.24 |
Android Compose WebView PullToRefresh 기능 구현하기 (0) | 2024.11.19 |