What to do
Issue credentials in TrackNova, store them in your secure CI or secret manager, and inject them into the build pipeline for the Android app.
The target developer experience is simple: add one dependency, initialize once in Application.onCreate(),
allow automatic install tracking, and only call event methods when needed.
The intended integration path is:
appKey, keyId, and signingSecret in your build secret flow.Application.onCreate().Use a single dependency line in the Android app. Avoid manual request signing code in the host application.
repositories {
google()
mavenCentral()
}
dependencies {
implementation("io.tracknova:sdk-android:0.1.0")
}
TrackNova issues one credential set per registered mobile app:
appKeykeyIdsigningSecretIssue credentials in TrackNova, store them in your secure CI or secret manager, and inject them into the build pipeline for the Android app.
Do not commit the signing secret to Git, do not place it in shared plaintext docs, and do not teach developers to hardcode it into tracked project files.
Your Android app can still read values from BuildConfig or another runtime configuration surface,
but those values should be fed by secure build-time injection, not manually pasted into public or versioned files.
This should be the only required startup code for automatic install tracking. The runtime code stays clean even when the credential source is handled securely upstream.
class App : Application() {
override fun onCreate() {
super.onCreate()
val config = TrackNovaConfig.Builder(
baseUrl = "https://trk.tracknova.in",
credentialProvider = TrackNovaConfig.CredentialProvider {
TrackNovaConfig.Credentials(
appKey = BuildConfig.TRACKNOVA_APP_KEY,
keyId = BuildConfig.TRACKNOVA_KEY_ID,
signingSecret = BuildConfig.TRACKNOVA_SIGNING_SECRET,
)
},
)
.automaticInstallTracking(true)
.build()
TrackNova.initialize(applicationContext, config)
}
}
If the app only needs install attribution, this can be added later.
A practical starter set is install, signup, trial_started,
purchase, and subscription_renewed.
The actual event names your app should send should come from TrackNova’s app setup UI, where mappings can differ by app, tenant, and commercial configuration.
TrackNova.trackEvent(
TrackNovaEvent(
name = "purchase",
revenue = BigDecimal("49.99"),
currency = "USD",
value = mapOf("plan" to "annual"),
),
)
appKey, keyId, and signingSecret in your secure build workflow.