앱에서 KSP 출력 사용: 4부

이제 생성된 클래스가 있으므로 코드에서 사용해 보겠습니다.

Checkout other parts in this series:

  1. Android KSP guide for dummies by a Dummy: Part 1 ( )
  2. KSP Gradle setup & Processor's first log: Part 2
  3. Generate the code using KSP : Part 3 ( )
  4. Using KSP output in app: Part 4



먼저 Event Interface가 무엇이고 어떤 메서드가 포함되어 있는지 살펴보겠습니다.

package com.aniket.myevent

import android.os.Bundle

interface Event {
    fun getHashMapOfParamsForCustomAnalytics(): HashMap<*, *>?

    fun getBundleOfParamsForFirebase(): Bundle
}


이는 생성된 모든 Event 클래스가 위에서 언급한 두 메서드를 모두 재정의해야 함을 의미합니다.

또한 이벤트 인터페이스 클래스를 사용하여 각 분석 SDK에 이벤트를 발생시키는 유틸리티(도우미) 클래스가 필요합니다.

package com.aniket.myevent

import android.util.Log

object EventUtils {

    fun postEvent(event: Event) {
        sendFirebaseEvent(event)
        sendCustomAnalyticEvent(event)
    }

    private fun sendFirebaseEvent(event: Event) {
        Log.i("Firebase_Event_fire", event.getBundleOfParamsForFirebase().toString())
    }

    private fun sendCustomAnalyticEvent(event: Event) {
        Log.i("Custom_Analytics_Event_fire", event.getHashMapOfParamsForCustomAnalytics().toString())
    }
}


기본적으로 IDE는 생성된 코드를 인식하지 못합니다. 따라서 생성된 기호에 대한 참조를 확인할 수 없는 것으로 표시합니다. IDE가 생성된 코드를 인식하도록 하려면 IDE가 올바른 패키지 이름을 가져올 수 있도록 app(또는 소비자 모듈)/build.gradle에 다음 줄을 추가해야 합니다.

그루비 그레이들

// app/build/gradle

buildTypes {
    release {
        ....
        sourceSets {
            main {
                java { srcDirs = ["build/generated/ksp/release/kotlin"]}
            }
        }
    }
    debug {
        ....
        sourceSets {
            main {
                java { srcDirs = ["build/generated/ksp/debug/kotlin"]}
            }
        }
    }
}


코틀린 그래들

// app/build.gradle.kts

buildTypes {
    getByName("release") {
        ....
        proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
        )
        sourceSets {
            getByName("main") {
                java.srcDir(File("build/generated/ksp/release/kotlin"))
            }
        }
    }
    getByName("debug") {
        ....
        sourceSets {
            getByName("main") {
                java.srcDir(File("build/generated/ksp/debug/kotlin"))
            }
        }
    }
}


마지막으로 할 일은 실제로 이벤트를 트리거하는 것입니다.

bookTicketButton.setOnClickListener {
    EventUtils.postEvent(
        TicketBookClickedParamsEvent(
            TicketBookClickedParams(
                eventName = "TicketBookClicked",
                screenName = "MainActivity",
                ticketNumber = 1223,
                ticketAmount = "1220"
            )
        )
    )
}


앱을 실행하고 실행된 이벤트 로그를 살펴보겠습니다.



연결
GitHub 저장소 파트 4 분기: https://github.com/aniketbhoite/ksp-my-event/tree/part-4

좋은 웹페이지 즐겨찾기