이것도 Dev6 팀에서 안드로이드분이 알려주신거다..
아직 이 분이 알려주신거에 대한 포스팅이 하나 더 있다 ㅎㅎㅎ
혼자서 생존하던 안드개발자에게 새로운 방안을 제시해주셔서 감사하게 생각하고 있다.
먼저 나는 프로젝트를 생성했을때 나오는 build.gradle 이 Groovy 방식으로 되어있다는 사실 조차도 몰랐다.
이걸 찾아보면서 알게 됐는데
Kotlin DSL 로 왜 바꿔야하는가 부터 설명하자면
- 컴파일 타임에 에러 확인
- 코드 탐색
- 자동 완성
- 구문 강조
- IDE의 지원으로 향상된 편집환경
- 소스코드와 동일한 언어의 사용
의 장점이 있다고 한다.
하지만 장점만 있는건 이 세상에 없지.
단점도 존재한다.
https://developer.android.com/studio/build/migrate-to-kts?hl=ko
여기에도 적혀있듯 빌드속도가 느려진다고 한다.
그러나 나는 Kotlin DSL 로 바꾸고 싶다! 바꿔보자.
먼저 build.gradle 을 build.gradle.kts 로 변경해줘야한다.
이 build.gradle.kts 은 내가 전 포스팅에 적어둔것과는 다른 파일이다.
전에 만들어준 build.gradle.kts 는 root 폴더에서 만든 buildSrc안에 있는 gradle 파일이였고
여기서 바꿔줄 build.gradle.kts 는 app 단의 build.gradle을 바꿔주는거다.
그리고 플러그인 블럭부터 바꿔보자.
Groovy DSL
// Groovy DSL
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
}
Kotlin DSL
plugins {
id("com.android.application")
kotlin("android")
kotlin("kapt")
}
사실 모양(?)이 조금 바뀌었을뿐 크게 달라진건 없다.
다음은 안드로이드 블럭이다.
android {
compileSdkVersion(Versions.COMPILE_SDK_VERSION)
buildToolsVersion = Versions.BUILD_TOOLS_VERSION
defaultConfig {
applicationId = "com.supremehyo.multitest"
minSdkVersion(Versions.MIN_SDK_VERSION)
targetSdkVersion(Versions.TARGET_SDK_VERSION)
vectorDrawables.useSupportLibrary = true
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
getByName("release") {
proguardFiles(
getDefaultProguardFile(
"proguard-android-optimize.txt"
),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}
dependencies {
implementation (Kotlin.KOTLIN_STDLIB)
implementation (AndroidX.CORE_KTX)
implementation (AndroidX.APP_COMPAT)
implementation (Google.MATERIAL)
testImplementation (UnitTest.JUNIT)
androidTestImplementation (AndroidTest.ANDROID_JUNIT)
androidTestImplementation (AndroidTest.ESPRESSO_CORE)
}
전 buildSrc 를 사용한 부분과 Kotlin DSL 을 합쳐서 만들어봤다.
정상적으로 빌드도 된다!
좀 더 제대로 된 프로젝트 관리에 가까워지는 기분이 든다 ㅎㅎ
'Android' 카테고리의 다른 글
Android Databinding (데이터 바인딩) (0) | 2022.02.26 |
---|---|
안드로이드 MVVM에서 코루틴 Flow로 이벤트를 처리하는 방법에 대해 (0) | 2022.02.21 |
안드로이드 클린 아키텍쳐에 대해 (0) | 2022.02.21 |
Android 프로젝트를 Multi Module 로 구성해보자. (0) | 2022.02.10 |
Android buildSrc 로 Dependency 관리하기 (0) | 2022.02.09 |
안드로이드 코루틴 - async와 await, LifecycleScope과 ViewModelScope (0) | 2022.01.11 |
안드로이드 edittext 최대길이(maxlength) 조절 (0) | 2021.10.21 |
MVVM 을 왜 써야할까? MVP와 다른점이 뭘까 (0) | 2021.09.16 |