[Android] Kapt? KSP?

최현준·2024년 5월 25일
0
post-thumbnail

안드로이드 개발에서 코드 생성 및 컴파일 타임의 의존성 주입을 다루는 라이브러리로 Kapt(Kotlin Annotation Processing Tool)와 KSP(Kotlin Symbol Processing)가 있다. 이 두 도구의 차이점을 이해하면 프로젝트의 요구 사항에 맞는 도구를 선택하는 데 도움이 된다. 이번 글에서는 Kapt와 KSP의 주요 차이점을 상세히 설명하겠다.

Kapt (Kotlin Annotation Processing Tool)

Kapt는 Kotlin 코드에서 Java의 어노테이션 프로세서를 사용할 수 있도록 해주는 도구다. Kapt는 Kotlin 코드를 Java로 변환하고, 그 결과를 바탕으로 어노테이션 프로세서를 실행한다.

주요 특징:

  1. 호환성: Kapt는 기존 Java 어노테이션 프로세서를 그대로 사용할 수 있도록 해준다. 이는 Java 기반의 라이브러리와의 호환성이 뛰어나며, Dagger와 같은 라이브러리와 함께 자주 사용된다.

  2. 코드 변환: Kapt는 Kotlin 코드를 중간 단계에서 Java로 변환한 다음, 어노테이션 프로세서를 실행한다. 이는 추가적인 변환 단계를 필요로 하므로 컴파일 시간이 늘어날 수 있다.

사용법

build.gradle 파일에 kapt 플러그인을 추가하고, 의존성 섹션에 어노테이션 프로세서 의존성을 추가하면 된다.

apply plugin: 'kotlin-kapt'

dependencies {
    implementation "com.google.dagger:dagger:2.XX.X"
    kapt "com.google.dagger:dagger-compiler:2.XX.X"
}

KSP (Kotlin Symbol Processing)

KSP는 Kotlin용으로 설계된 경량의 어노테이션 프로세싱 도구다. KSP는 Kotlin 코드에서 직접 어노테이션을 처리하여 추가적인 변환 단계 없이 더 빠르게 동작한다.

주요 특징

  1. 성능: KSP는 Kotlin 코드를 Java로 변환하지 않고 직접 처리하므로, Kapt에 비해 컴파일 속도가 빠르다. 이는 특히 큰 코드베이스에서 유리하다.

  2. 간결한 API: KSP는 Kotlin의 특성을 잘 활용한 API를 제공하여 더 간결하고 직관적인 어노테이션 프로세싱을 가능하게 한다. 이는 Kotlin 개발자에게 더 익숙한 환경을 제공한다.

사용법

build.gradle 파일에 ksp 플러그인을 추가하고, 의존성 섹션에 어노테이션 프로세서 의존성을 추가하면 된다.

    plugins {
    id 'com.google.devtools.ksp' version '1.5.31-1.0.0'
}

dependencies {
    implementation "com.google.dagger:dagger:2.XX.X"
    ksp "com.google.dagger:dagger-compiler:2.XX.X"
}

Kapt와 KSP의 차이점 요약

  1. 호환성:
    Kapt: 기존 Java 어노테이션 프로세서와의 호환성이 좋다. Java 생태계의 많은 라이브러리를 그대로 사용할 수 있다.
    KSP: Kotlin용으로 최적화되어 있지만, 일부 Java 어노테이션 프로세서와의 호환성 문제 발생 가능성이 있다.

  2. 성능:
    Kapt: 중간 단계의 코드 변환으로 인해 컴파일 속도가 느리다. 이는 대규모 프로젝트에서 빌드 시간을 늘릴 수 있다.
    KSP: 직접 Kotlin 코드를 처리하여 컴파일 속도가 빠르다. 대규모 프로젝트에서도 효율적으로 동작한다.

3 .사용성:
Kapt: Java 기반 API를 사용한다. Java 어노테이션 프로세서와의 통합이 자연스럽다.
KSP: Kotlin 친화적인 API를 사용한다. Kotlin의 언어 특성을 잘 활용할 수 있다.

  1. 설치 및 설정:
    Kapt: kapt 플러그인을 사용한다. 기존 Java 어노테이션 프로세서를 사용하는 방법과 유사하다.
    KSP: ksp 플러그인을 사용한다. Kotlin 프로젝트에 쉽게 통합할 수 있다.

그럼 어떤 것을 사용해야 할까?

  1. 기존 프로젝트: 이미 Kapt를 사용하고 있는 프로젝트나 Java 어노테이션 프로세서를 많이 사용하는 경우, Kapt를 계속 사용하는 것이 무난하다.

  2. 성능이 중요한 경우: 컴파일 속도가 중요한 대규모 프로젝트에서는 KSP를 사용하는 것이 유리하다. KSP는 중간 변환 단계 없이 직접 Kotlin 코드를 처리하므로 더 빠르게 빌드할 수 있다.

  3. Kotlin 특화 프로젝트: Kotlin의 특성을 최대한 활용하고 싶은 경우, KSP를 사용하는 것이 좋다. KSP는 Kotlin에 최적화된 API를 제공하여 더 자연스러운 개발 경험을 제공한다.

결론

Kapt와 KSP는 각각의 장단점이 있다. 기존 Java 어노테이션 프로세서를 사용해야 하거나, 프로젝트가 이미 Kapt를 사용하고 있다면 Kapt를 계속 사용하는 것이 편리하다. 반면에, 성능이 중요하고 Kotlin의 특성을 최대한 활용하고 싶다면 KSP를 고려해볼 만하다.

0개의 댓글