[android] Groovy에서 KTS로 빌드 구성 이전

sundays·2022년 11월 17일
0

android

목록 보기
2/18
post-custom-banner

저는 몰랐습니다. build.gradle 파일이 레거시 였다는 것을. 찾아보니 안드로이드 4.0 이후에 Kotlin Script를 사용할 수 있게 되었습니다. 변경된지는 오래 되었는데, 이번에 빌드 할때 개인키를 따로 관리하기 위해 Kotlin-dsl 을 추가 하려다, 이것이 다름이 아니라 빌드 구성이 변경해야 한다는 것을 알게되었습니다.

gradle vs KTS

  • groovy
    • 빌드 성능이 상대적으로 좋습니다
    • Java8이상에서 동작
    • 새로운 라이브러리 버전 Inspection 기능 미지원
  • Kotlin Script
    • 컴파일 타임에 에러 확인
    • 코드 탐색
    • 자동 완성
    • 구문 강조
    • Android Studio 코드 편집기에서 더 나은 통합을 제공

공식 이전 가이드(Groovy to Kotlin)가 존재해서 이대로만 진행하면 됩니다. 간단하게는 작은 따옴표(')를 큰 따옴표(")로 변경하는 것입니다

파일 이전

공식 문서에서도 한번에 한파일씩 KTS로 변환 해야 한다고 합니다.

  1. 파일명을 변경
  • build.gradle -> build.gradle.kts
  • setting.gradle -> setting.gradle.kts
  1. 컴파일 확인

컴파일 가이드

공식 이전 가이드를 참조하시되 간단히 문법을 소개하며 어떻게 다른지 확인해보겠습니다.

문자열은 큰 따옴표로 정의

groovy 에서는 문자열 정의시 작은 따옴표를 사용하였는데, Kotlin 에서는 큰 따옴표가 필요합니다

$ 접두사 활용

Groovy에서는 다음 스니펫의 $project.rootDir과 같이 점선 표현식의 문자열 보간 유형에 $ 접두사를 사용할 수 있습니다.

myRootDirectory = "$project.rootDir/tools/proguard-rules-debug.pro"

Kotlin에서는 위 코드가 project.rootDir이 아닌 project에서 toString()을 호출합니다. 루트 디렉터리의 값을 가져오려면 전체 변수를 중괄호로 묶습니다.

myRootDirectory = "${project.rootDir}/tools/proguard-rules-debug.pro"

변수할당

groovy 에서 적용했던 빌드 속성이 모두 setter 처럼 변경되었습니다. KTS에서 이 변수들이 모두 val 로 적용되었습니다

Use

저의 경우에는 이렇게 build 되는 것이 신기하고 kotlin dsl을 사용할 수 있어서 활용성이 더 높아진 것 같아서 매우 좋습니다. 이 블로그가 제가 추가할 버전 관리 및 Hilt 를 추가 할 예정인데 도움이 될 것 같습니다!

Reference

profile
develop life
post-custom-banner

0개의 댓글