> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zetaglobal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

Install the Zeta Android SDK via Maven Central (Gradle). The SDK is distributed as a single AAR artifact.

This guide walks through adding the SDK dependency to your Gradle build, verifying requirements, and confirming ProGuard/R8 compatibility.

## On this page

* [Requirements](#requirements)
* [Install via Gradle](#install-via-gradle)
* [ProGuard / R8](#proguard-r8)
* [Transitive dependencies](#transitive-dependencies)
* [Mobile app registration](#mobile-app-registration)

## Requirements

| Tool                       | Minimum supported version |
| -------------------------- | ------------------------- |
| Android API level (minSdk) | 24 (Android 7.0)          |
| Compile SDK (compileSdk)   | 34 (Android 14)           |
| Kotlin                     | 1.9+                      |
| Gradle                     | 8.4+                      |

## Install via Gradle

Add the SDK dependency to your module-level `build.gradle.kts`:

```kotlin
dependencies {
    implementation("net.zetaglobal.app:core:1.0.0")
}
```

Or in Groovy (`build.gradle`):

```groovy
dependencies {
    implementation 'net.zetaglobal.app:core:1.0.0'
}
```

The artifact is published to [Maven Central](https://central.sonatype.com/artifact/net.zetaglobal.app/core). No additional repository configuration is required if your project already includes `mavenCentral()` in its repository block.

The SDK also requires Firebase Cloud Messaging for push notifications. Add it as a dependency in your app module:

```kotlin
dependencies {
    implementation("net.zetaglobal.app:core:1.0.0")
    implementation("com.google.firebase:firebase-messaging:24.1.0")
}
```

> **Note:** Firebase Messaging is a `compileOnly` dependency of the SDK — you must declare it in your own app module for push notifications to work.

## ProGuard / R8

No custom ProGuard or R8 rules are required. The SDK's AAR includes all necessary keep rules via `consumer-rules.pro`. Your release builds work without additional configuration.

## Transitive dependencies

The SDK brings the following transitive dependencies into your project via `implementation` scope. If your app already uses any of these at a different version, Gradle's dependency resolution applies.

| Dependency                                 | Version | Purpose                                    |
| ------------------------------------------ | ------- | ------------------------------------------ |
| `androidx.room:room-runtime`               | 2.6.1   | Local data persistence                     |
| `androidx.room:room-ktx`                   | 2.6.1   | Local data persistence (Kotlin extensions) |
| `androidx.work:work-runtime-ktx`           | 2.9.0   | Background processing                      |
| `com.github.bumptech.glide:glide`          | 4.16.0  | Image loading                              |
| `androidx.datastore:datastore-preferences` | 1.1.3   | Configuration persistence                  |
| `androidx.lifecycle:lifecycle-process`     | 2.8.2   | Lifecycle observation                      |
| `com.google.android.material:material`     | 1.12.0  | UI components                              |
| `androidx.appcompat:appcompat`             | 1.7.0   | UI compatibility                           |
| `androidx.browser:browser`                 | 1.8.0   | In-app web browsing                        |

## Mobile app registration

Follow the [Mobile App Registration guide](https://knowledgebase.zetaglobal.com/kb/mobile-app-registration) to register your app with ZMP.&#x20;

Registration produces the `clientSiteId` and `clientSecret` you pass to `ZTConfig` during initialization.

During registration, you will need your app's **package name** (Application ID), which is the `applicationId` value in your module-level `build.gradle.kts`.

> **Important:** SDK API tokens have write-only access, restricted to updating profiles, tracking events, and logging errors. Refresh tokens are scoped to mobile-specific APIs and cannot access broader platform functionality.

## Next

* [Getting Started](https://docs.zetaglobal.com/docs/android-sdk-getting-started) — initialize the SDK with your `clientSiteId` and `clientSecret`.

<br />