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

# Getting Started

> Integrate the DARO Android SDK into your app.

export const androidPlguinLatestVersion = '1.0.13';

export const androidComposeLatestVersion = '1.3.2';

export const androidDaroMLatestVersion = '1.3.16';

export const androidDaroLatestVersion = '1.7.0';

export const androidCoreLatestVersion = '1.3.8';

## Before You Begin

Check requirements before integration.

### Requirements

* Android minSdkVersion: 23

<Check>
  Verify [app-ads.txt setup](https://guide.daro.so/en/app-ads-txt-settings) before proceeding.
</Check>

<Warning>
  **Desugaring required**: Configure desugaring if minSdk is below 26.

  <CodeGroup>
    ```kotlin kotlin {4,5,6,7,8,18} theme={null}
    android {
        ...

        compileOptions {
            isCoreLibraryDesugaringEnabled = true
            sourceCompatibility = JavaVersion.VERSION_1_8
            targetCompatibility = JavaVersion.VERSION_1_8
        }

        ...
    }

    ...

    dependencies {
        ...

        coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")

        ...
    }
    ```

    ```groovy groovy {4,5,6,7,8,18} theme={null}
    android {
        ...

        compileOptions {
            coreLibraryDesugaringEnabled true
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }

        ...
    }

    ...

    dependencies {
        ...

        coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'

        ...
    }
    ```
  </CodeGroup>
</Warning>

***

## Configure Your App

<Steps>
  <Step title="Project-level build configuration">
    1. Add maven repositories to the `settings.gradle` file.

    <Tabs>
      <Tab title="Non-Reward">
        <CodeGroup>
          ```kotlin kotlin theme={null}
          dependencyResolutionManagement {
              repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
              repositories {
                  ...
                  maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
                  maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
                  maven { url = uri("https://android-sdk.is.com/") }
                  maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
                  maven { url = uri("https://repo.pubmatic.com/artifactory/public-repos") }
              }
          }
          ```

          ```groovy groovy theme={null}
          allprojects {
              repositories {
                  ...
                  maven { url 'https://artifact.bytedance.com/repository/pangle' }
                  maven { url 'https://cboost.jfrog.io/artifactory/chartboost-ads/' }
                  maven { url 'https://android-sdk.is.com/' }
                  maven { url 'https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea' }
                  maven { url 'https://repo.pubmatic.com/artifactory/public-repos' }
              }
          }
          ```
        </CodeGroup>
      </Tab>

      <Tab title="Reward">
        <CodeGroup>
          ```kotlin kotlin theme={null}
          dependencyResolutionManagement {
              repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
              repositories {
                  ...
                  maven { url = uri("https://android-sdk.is.com") }
                  maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
                  maven { url = uri("https://maven.ogury.co") }
                  maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
                  maven { url = uri("https://s3.amazonaws.com/smaato-sdk-releases/") }
                  maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
                  maven { url = uri("https://artifacts.applovin.com/android") }
              }
          }
          ```

          ```groovy groovy theme={null}
          allprojects {
              repositories {
                  ...
                  maven { url 'https://android-sdk.is.com' }
                  maven { url 'https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea' }
                  maven { url 'https://maven.ogury.co' }
                  maven { url 'https://artifact.bytedance.com/repository/pangle' }
                  maven { url 'https://s3.amazonaws.com/smaato-sdk-releases/' }
                  maven { url 'https://cboost.jfrog.io/artifactory/chartboost-ads/' }
                  maven { url 'https://artifacts.applovin.com/android' }
              }
          }
          ```
        </CodeGroup>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Add the DARO plugin to build.gradle(root)">
    2. Add the DARO plugin to the `build.gradle(root)` file.

    <Info>
      Latest version

      * daro-plugin : {androidPlguinLatestVersion}
    </Info>

    <Tabs>
      <Tab title="Non-Reward">
        <CodeGroup>
          ```kotlin kotlin theme={null}
          buildscript {
              repositories {
                  google()
                  mavenCentral()
              }
              dependencies {
                  classpath("so.daro:daro-plugin:1.0.13")
              }
          }
          ```

          ```groovy groovy theme={null}
          buildscript {
              repositories {
                  google()
                  mavenCentral()
              }
              dependencies {
                  classpath 'so.daro:daro-plugin:1.0.13'
              }
          }
          ```
        </CodeGroup>
      </Tab>

      <Tab title="Reward">
        <CodeGroup>
          ```kotlin kotlin theme={null}
          buildscript {
              repositories {
                  google()
                  mavenCentral()
                  maven { url = uri("https://artifacts.applovin.com/android") }
              }
              dependencies {
                  classpath("so.daro:daro-plugin:1.0.13")
                  classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:5.5.2")
              }
          }
          ```

          ```groovy groovy theme={null}
          buildscript {
              repositories {
                  google()
                  mavenCentral()
                  maven { url 'https://artifacts.applovin.com/android' }
              }
              dependencies {
                  classpath 'so.daro:daro-plugin:1.0.13'
                  classpath 'com.applovin.quality:AppLovinQualityServiceGradlePlugin:5.5.2'
              }
          }
          ```
        </CodeGroup>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Add Daro SDK">
    3. Add the Daro SDK.

    <Tabs>
      <Tab title="Non-Reward">
        <Info>
          Latest version

          * daro-a : {androidDaroLatestVersion}
          * daro-compose-util : {androidComposeLatestVersion}
        </Info>

        <CodeGroup>
          ```kotlin kotlin theme={null}
          dependencies {
              ...
              implementation("so.daro:daro-a:1.7.0")
              implementation("so.daro:daro-compose-util:1.3.2")
              ...
          }
          ```

          ```groovy groovy theme={null}
          dependencies {
              ...
              implementation 'so.daro:daro-a:1.7.0'
              implementation 'so.daro:daro-compose-util:1.3.2'
              ...
          }
          ```
        </CodeGroup>
      </Tab>

      <Tab title="Reward">
        <Info>
          Latest version

          * daro-m : {androidDaroMLatestVersion}
          * daro-compose-util : {androidComposeLatestVersion}
        </Info>

        <CodeGroup>
          ```kotlin kotlin theme={null}
          dependencies {
              ...
              implementation("so.daro:daro-m:1.3.16")

              // Compose-Only
              implementation("so.daro:daro-compose-util:1.3.2")
              ...
          }
          ```

          ```groovy groovy theme={null}
          dependencies {
              ...
              implementation 'so.daro:daro-m:1.3.16'

              // Compose-Only
              implementation 'so.daro:daro-compose-util:1.3.2'
              ...
          }
          ```
        </CodeGroup>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Add android-daro-key.txt file">
    4. Add the `android-daro-key.txt` file.

    <Tabs>
      <Tab title="General">
        ```
        app/
        └── android-daro-key.txt
        ```
      </Tab>

      <Tab title="Separate configuration per flavor/buildType">
        ```
        app/
        └── src/
            ├── EnvA/
            │   └── android-daro-key.txt
            └── EnvB/
                └── android-daro-key.txt
        ```
      </Tab>
    </Tabs>

    <Note>
      `android-daro-key.txt` can be downloaded from the DARO dashboard.
    </Note>
  </Step>

  <Step title="Configure daroAppKey">
    5. Configure daroAppKey.

    <Tabs>
      <Tab title="General">
        <Expandable title="Configure in gradle.properties">
          ```properties theme={null}
          android.useAndroidX=true
          android.enableJetifier=true
          daroAppKey={APP_KEY}
          ```
        </Expandable>

        <Expandable title="Configure directly in app module gradle">
          Configure as follows in the app module build.gradle.

          <CodeGroup>
            ```kotlin kotlin theme={null}
            buildscript{
                extra["daroAppKey"] = "APP_KEY"
            }
            ```

            ```groovy groovy theme={null}
            buildscript {
                ext.daroAppKey = "APP_KEY"
            }
            ```
          </CodeGroup>
        </Expandable>
      </Tab>

      <Tab title="Separate configuration per flavor/buildType">
        <Expandable title="Configure in gradle.properties">
          ```properties theme={null}
          android.useAndroidX=true
          android.enableJetifier=true
          daroAppKey.EnvA={APP_KEY}
          daroAppKey.EnvB={APP_KEY}
          ```
        </Expandable>

        <Expandable title="Configure directly in app module gradle">
          Configure as follows in the app module build.gradle.

          <CodeGroup>
            ```kotlin kotlin theme={null}
            buildscript{
                extra["daroAppKey.EnvA"] = "APP_KEY"
                extra["daroAppKey.EnvB"] = "APP_KEY"
            }
            ```

            ```groovy groovy theme={null}
            buildscript {
                ext.daroAppKey.EnvA = "APP_KEY"
                ext.daroAppKey.EnvB = "APP_KEY"
            }
            ```
          </CodeGroup>
        </Expandable>

        <Warning>
          The first letter of the Flavor name must be capitalized.
        </Warning>
      </Tab>
    </Tabs>

    <Note>
      daroAppKey can be found in the DARO dashboard.

      <img src="https://mintcdn.com/delightroom-5a71a6a8/zubkjN5vMaM7lt41/sdk-integration/android/img/appkey_sample.png?fit=max&auto=format&n=zubkjN5vMaM7lt41&q=85&s=f233dd9e626ee9f7ff43100b33f83e4e" alt="daroAppKey" width="300" data-path="sdk-integration/android/img/appkey_sample.png" />
    </Note>
  </Step>

  <Step title="Apply the DARO plugin to build.gradle(app)">
    6. Apply the DARO plugin to `build.gradle(app)`.

    <Tabs>
      <Tab title="Non-Reward">
        <CodeGroup>
          ```kotlin kotlin theme={null}
          plugins {
              ...
              id("so.daro.a")
              ...
          }
          ```

          ```groovy groovy theme={null}
          plugins {
              ...
              id 'so.daro.a'
              ...
          }
          ```
        </CodeGroup>
      </Tab>

      <Tab title="Reward">
        <CodeGroup>
          ```kotlin kotlin theme={null}
          plugins {
              ...
              id("so.daro.m")
              ...
          }
          ```

          ```groovy groovy theme={null}
          plugins {
              ...
              id 'so.daro.m'
              ...
          }
          ```
        </CodeGroup>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Apply ProGuard rules if needed">
    * The daro SDK includes the following obfuscation rules in consumer-rules.pro, which are automatically merged during app build when adding the AAR via Gradle.
    * If you want to modify the obfuscation rules, please refer to the content below and apply them to your proguard-rules.pro file.

    <Tabs>
      <Tab title="Non-Reward">
        ```
        # Pangle (ByteDance)
        -keep class com.bytedance.sdk.** { *; }

        # Amazon APS
        -keep class com.amazon.** { *; }
        -keep public class com.google.android.gms.ads.** { public *; }
        -keep class com.iabtcf.** { *; }

        # IronSource
        -keepclassmembers class * implements android.os.Parcelable {
            public static final android.os.Parcelable$Creator *;
        }
        -keep class com.ironsource.adapters.** { *; }
        -dontwarn com.ironsource.**
        -dontwarn com.ironsource.adapters.**
        -keepclassmembers class com.ironsource.** { public *; }
        -keep public class com.ironsource.**
        -keep class com.ironsource.adapters.** { *; }

        # IronSource - AppLovin integration
        -keepclassmembers class com.applovin.sdk.AppLovinSdk { static *; }
        -keep public interface com.applovin.sdk.** { *; }
        -keep public interface com.applovin.adview.** { *; }
        -keep public interface com.applovin.mediation.** { *; }
        -keep public interface com.applovin.communicator.** { *; }

        # IronSource - AndroidX
        -keep class androidx.localbroadcastmanager.content.LocalBroadcastManager { *; }
        -keep class androidx.recyclerview.widget.RecyclerView { *; }
        -keep class androidx.recyclerview.widget.RecyclerView$OnScrollListener { *; }

        # IronSource - Android
        -keep class * extends android.app.Activity

        # Retrofit
        -keep,allowobfuscation,allowshrinking interface retrofit2.Call
        -keep,allowobfuscation,allowshrinking class retrofit2.Response

        # kotlinx.serialization
        -dontnote kotlinx.serialization.AnnotationsKt
        -keepclassmembers class kotlinx.serialization.json.** {
            *** Companion;
        }
        -keepclasseswithmembers class kotlinx.serialization.json.** {
            kotlinx.serialization.KSerializer serializer(...);
        }

        # Kotlin Coroutines
        -keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation

        # media3 Player
        -keep class androidx.media3.common.** { *; }
        ```
      </Tab>

      <Tab title="Reward">
        For Reward Apps, you do not need to configure proguard separately.
      </Tab>
    </Tabs>
  </Step>
</Steps>

## Initialize SDK

<Warning>
  **Important: Load Ads After Initialization**

  * Initialize DARO SDK before loading ads by calling `Daro.init()`.
  * Requesting ads before initialization may prevent proper display.
</Warning>

```kotlin theme={null}
class AppApplication : Application() {

  override fun onCreate() {
    ...

    // Daro SDK initialization
    Daro.init(
      application = application,
      sdkConfig = Daro.SDKConfig.Builder()
          .setDebugMode(...) // (set log exposure, default : false)
          .setAppMuted(...) // (set app mute, default : false)
          .build()
    )
  }
}
```

## App Mute Setting

For app open, banner, interstitial, rewarded, rewarded interstitial, and native ad formats, you can use the `setAppMuted(...)` method to inform the Daro SDK that the app volume has been muted.

```kotlin theme={null}
// Mute app
Daro.setAppMuted(true)


// Unmute app
Daro.setAppMuted(false)
```

<Tip>
  Native ads apply the mute state to video playback at load time, so call `setAppMuted` before loading native ads.
</Tip>

<Warning>
  **App Mute Usage Precautions**

  When app mute is enabled, some video ad creatives that cannot play while muted may be excluded from ad requests, which can slightly reduce the ad pool and affect revenue.
</Warning>
