Kotlin 코드에서는 직접 Annotation Processing이 불가능하므로,
KAPT는 Java 컴파일러가 이해할 수 있도록 Java stub 파일을 생성하여 Hilt와 같은 Java 기반 라이브러리가 Kotlin 코드를 처리할 수 있도록 한다.
이 과정에서 Java 변환 작업이 필요해 빌드 시간이 느려질 수 있다.
Annotation Processing
컴파일 타임에 애노테이션을 분석하고, 이를 기반으로 코드를 생성하거나 검증하는 과정
Java stub 파일
Kotlin 코드에서 Java 기반의 Annotation Processor를 사용할 수 있도록 Kotlin 코드를 임시로 변환한 파일
Kotlin의 고유한 기능(Null Safety, Extension Functions 등)은 Stub 파일에 반영하지 못한다.
KSP는 Kotlin 코드에서 직접 Annotation Processing을 수행할 수 있도록 설계되었다.
Kotlin 코드를 Java로 변환하는 과정이 없으므로, KAPT 보다 빠르다.
| 특징 | KAPT | KSP |
|---|---|---|
| 처리 방식 | Java stub 생성 후 Java Annotation Processor 사용 | Kotlin 코드를 직접 처리 |
| 성능 | 느림 | 빠름 |
| Kotlin 고유 기능 활용 | 불가능 | 가능 |