
DSL : Domain Specific Language
도메인 특화된 프로그래밍 언어
KTS (=Kotlin DSL)
Kotlin으로 구성된 스크립트
KTS란?
코틀린 언어로만 Gradle 빌드 스크립트를 적용할 수 있는 구성
KTS 사용 이유
앱의 구성이 Java에서 Kotlin으로 넘어왔으며 이미 Kotlin을 알고 있다는 전제로 빌드를 구성할 수 있도록 안드로이드에서 권장.
빌드전에 오류 발생을 줄이고, 앱의 기능이 복잡해짐에 따라 관심사 분리에 주 목적이기도 함.
KTS 모듈화로 사용해보자 - build-logic 모듈
빌드 구성 자체도 모듈화를 통해서 앱의 구성을 유지 보수에 용이하도록 표준화 됨.
안드로이드에서도 제공하는 샘플 앱도 현재 해당 구성으로 예제로 제공되고 있음.
빌드 구성에 대한 장단점 비교
| 빌드 스크립트 | 장점 | 단점 | 비고 |
| groovy DSL | - 빌드 속도가 빠르다. - 안드로이드에서 최초에 채택한 Gradle 환경이므로 누구나 써본 경험이 있다. |
- groovy 언어에 대한 학습이 필요하다. - 컴파일 타임에서 오류가 발생한다. - 기능이 확장될 수록 스크립트 내용이 비대 해진다. |
|
| kotlin DSL - 앱 모듈 내에 설정 |
- 코틀린 언어로만 빌드 스크립트를 짤 수 있다. - 빌드전에 오류를 확인 할 수 있다. - 안드로이드에서 공식 문서를 발행을 하였고 마이그레이션을 하여 사용하길 권장한다. |
- groovy 보단 빌드 속도가 느리다. | https://developer.android.com/studio/build/migrate-to-kts?hl=ko |
| kotlin DSL - 빌드 모듈 - toml 파일 참조한 include 모듈 |
- 관심사가 분리되어 있는 모듈 형태로 유지 보수에 용이하다. - 협업 시 conflict 발생이 줄어든다. - 기능이 확장될 수록 정리가 잘 되어진다. - 기존에 앱 모듈에서 KTS 구성의 장점을 그대로 따라간다. |
- 처음에 빌드 세팅이 쉽지 않다. - 간단한 프로젝트에서는 맞지 않아 보인다. |
https://github.com/android/nowinandroid/blob/main/build-logic/convention/build.gradle.kts |
KTS 빌드가 groovy 보단 속도가 느린 이유?
KTS 빌드가 느려진다는 내용은 자세히 적힌 내용은 없어보이고, 구글 개발 사이트에도 알려진 이슈로 설명이 나와있다.
- https://developer.android.com/studio/build/migrate-to-kts?hl=ko
- https://github.com/gradle/gradle/issues/15886#issuecomment-1432923669

Reference
- https://thdev.tech/android/2022/08/22/Android-Multi-Module/
- https://github.com/droidknights/DroidKnights2023_App: 국내 최대 규모 안드로이드 컨퍼런스 드로이드나이츠 2023 앱 (github.com) (샘플 코드 참고)
'Android > Module' 카테고리의 다른 글
| [Android Multi module] DataStore protobuf 암호화/복호화 적용 (1) | 2024.09.13 |
|---|---|
| [Android Multi module] DataStore protobuf 적용 테스트 (0) | 2024.09.13 |
| [Android Multi module] local.properties 파일로 API Key 관리 (1) | 2024.09.13 |
| [Android Multi module] DataStore protobuf 라이브러리 추가 방법 (0) | 2024.09.13 |
| [Android Multi module] feature module 생성 방법 (0) | 2024.09.13 |