kotlin KAPT(Kotlin Annotation Processing Tool)에 대한 글입니다.
Kotlin에서 Annotation처리를 위해서 KAPT(Kotlin Annotation Processing Tool)을 제공합니다.
Project 내부에서 Hilt, Room, Databinding 등 library가 사용된다면 기존에 annotationProcessor에서 kapt로 바꾸어 선언하는 게 필요합니다.
Kotlin은 kotlinc로 컴파일되기 때문에 기존에 Java로 작성된 Annotation Process로는 Kotlin의 Annotation이 제대로 처리되지 않습니다.
예를 들어 Android의 Room library를 사용하다가 아래와 같은 Exception을 만날 수도 있습니다.
java.lang.RuntimeException: cannot find implementation for database ... _Impl does not exist
Gradle에 kapt plugin을 적용하는 방법은 아래와 같습니다.
plugin 추가
plugins {
kotlin("kapt") version "1.5.30"
}
또는
apply plugin: 'kotlin-kapt'
Library를 사용할 때 annotationProcessor를 kapt로 변경해 주어야 합니다.
dependencies {
// annotationProcessor -> kapt
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
}
testAnnotaionProcessor는 kaptTest로 변경해야 한다.
kapt 사용 시 호환성에 주의해야 합니다. 사용하는 library가 kapt를 지원하는지 확인해야 합니다.
만약 지원하지 않는다면 라이브러리가 정상적으로 동작하지 않을 수 있습니다.
반응형
'Android' 카테고리의 다른 글
error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ApplicationContext android.content.Context cannot be provided without an @Provides-annotated method. 해결 방법 (0) | 2021.09.27 |
---|---|
[Android] Hilt @Binds, @Providers 차이점 (1) | 2021.09.27 |
[Android] PID(Process ID)/UID(User ID) ADB로 확인하는 방법 (0) | 2021.09.07 |
[Android] logcat chatty 로그가 제대로 출력되지 않을 때 expire 1 line (0) | 2021.09.07 |
Android adb command list (0) | 2021.09.07 |
Android Annotation Summary (0) | 2021.09.07 |
List up Android version, SDK version, API level (0) | 2021.09.03 |
WifiNetworkSuggestion Example (0) | 2021.09.02 |