アプリケーションでの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

まず、イベントインターフェイスとそれがどのようなメソッドを含んでいるかを見てみましょう.
package com.aniket.myevent

import android.os.Bundle

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

    fun getBundleOfParamsForFirebase(): Bundle
}
すべての生成されたイベントクラスは、上記の両方のメソッドをオーバーライドしなければなりません.
また、イベントインターフェイスクラスを使用して、各解析用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を作成するには、アプリケーション内の次の行を追加しなければなりません.Gradle SO IDEは正しいパッケージ名をインポートできます.
グルービーグレード
// 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