Android/Module

[Android build-logic] 모듈화 kts 구성

whjungdev 2024. 9. 13. 20:18

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 빌드가 느려진다는 내용은 자세히 적힌 내용은 없어보이고, 구글 개발 사이트에도 알려진 이슈로 설명이 나와있다.

Reference