Skip to main content

Installation

Add the Pulse Android SDK to your project and initialize it.

Requirements

  • minSdk 21+
  • Android Gradle Plugin 8.3.0+
Optional — minSdk below 26 (core library desugaring)

Only if minSdk is below 26. In the app module build.gradle:

android {
compileOptions {
coreLibraryDesugaringEnabled true
}
}

dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4'
}

See Android library desugaring.

Step 1 — Add Dependency

dependencies {
implementation("org.dreamhorizon:pulse-android-sdk:LATEST_VERSION")
}

Check Maven Central for the latest version.

Step 2 — Initialize

Initialize in your Application class as early as possible in onCreate().

Main thread required

Call initialize() on the main thread. Several instrumentations register listeners on the main thread at startup — deferring or moving initialization to a background thread will cause them to silently not work.

import com.pulse.android.sdk.PulseSDK
import com.pulse.android.api.otel.PulseDataCollectionConsent

class MainApplication : Application() {
override fun onCreate() {
super.onCreate()

PulseSDK.INSTANCE.initialize(
application = this,
apiKey = "your-api-key",
dataCollectionState = PulseDataCollectionConsent.ALLOWED,
)
}
}

That's all that's required. With this basic configuration, the SDK starts collecting:

  • ✅ Native crashes (uncaught exceptions + JVM crashes)
  • ✅ ANR detection
  • ✅ Activity and Fragment screen lifecycle
  • ✅ App startup timing
  • ✅ Slow and frozen frame detection
  • ✅ Network connectivity changes (WiFi / cellular transitions)
  • ✅ Session tracking
  • ✅ Device and OS attributes (device.model, os.version, etc.)
Want more?

See Configuration for opt-in instrumentations — including session replay, click tracking, HTTP monitoring, and location.

Step 3 — Verify

if (PulseSDK.INSTANCE.isInitialized()) {
Log.d("Pulse", "SDK initialized successfully")
}

Telemetry will start appearing in your Pulse dashboard within seconds of the first launch.


This covers the basics — but Pulse offers much more through initialize(): instrumentation toggles, session config, consent control, custom headers, disk buffering, and more. See Configuration for the full parameter reference.

Next Steps