Apps Kit SDK logoApps Kit SDK
Documentación · Integración en Android

1. Dependencias

1.1 El SDK de AKS

Añade el SDK en el archivo build.gradle.kts del módulo de la app:

kotlin
dependencies {
    implementation("com.github.Pentabit-Labs-LLC:appskitsdk-android:${LATEST_VERSION}")
}

Sustituye ${LATEST_VERSION} por la etiqueta más reciente de las versiones de appskitsdk-android (o de la insignia de JitPack en el README de ese repositorio), por ejemplo, v6.4.0.0.

AKS se publica como un conjunto de archivos .aar independientes (no como un módulo Maven con información de dependencias), por lo que ninguna de sus dependencias de terceros se incluye de forma transitiva. Todo lo que se indica a continuación debe declararse explícitamente en el módulo de tu app. La única excepción es SupportAKS (com.pentabit.aks_android_support_lib): esas clases se incluyen directamente en el propio artefacto appskitsdk-android, por lo que no debes añadir com.pentabit:aks-android-helpers por separado.

1.2 Bibliotecas obligatorias (siempre necesarias)

El código compilado de AKS hace referencia directa a estas bibliotecas, por lo que son obligatorias independientemente de las redes publicitarias que actives:

kotlin
dependencies {
    // Firebase (Remote Config drives almost all AKS behavior; Analytics is used for AKS events)
    implementation(platform("com.google.firebase:firebase-bom:34.3.0"))
    implementation("com.google.firebase:firebase-analytics")
    implementation("com.google.firebase:firebase-config")
    implementation("com.google.android.gms:play-services-measurement-api:23.0.0")

    // Coroutines / serialization / datetime — used throughout AdsManager and AppsKitSDK
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
    implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.7.1")

    // Ktor — AKS's internal network client for fetching ad/config data
    implementation("io.ktor:ktor-client-core:3.3.3")
    implementation("io.ktor:ktor-client-okhttp:3.3.3")
    implementation("io.ktor:ktor-client-content-negotiation:3.3.3")
    implementation("io.ktor:ktor-serialization-kotlinx-json:3.3.3")
    implementation("io.ktor:ktor-client-logging:3.3.3")

    // Local storage AKS uses for its own preferences/session/ad-state tracking
    implementation("com.russhwolf:multiplatform-settings:1.1.1")
    implementation("com.russhwolf:multiplatform-settings-serialization:1.1.1")

    // Jetpack Compose — AKS's Feature/Cross-Promotion ad screens, the Configuration
    // Dashboard, and the Test Suite (§10) are all built with Compose. Pull these in via
    // the Compose BOM so versions stay aligned with whatever else in your app uses Compose.
    implementation(platform("androidx.compose:compose-bom:2025.08.01"))
    implementation("androidx.compose.runtime:runtime")
    implementation("androidx.compose.foundation:foundation")
    implementation("androidx.compose.material3:material3")
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.ui:ui-tooling-preview")

    // Image loading used by AKS's built-in cross-promotion / feature-promotion ad screens
    implementation("io.coil-kt.coil3:coil:3.3.0")
    implementation("io.coil-kt.coil3:coil-compose:3.3.0")
    implementation("io.coil-kt.coil3:coil-compose-core:3.3.0")
    implementation("io.coil-kt.coil3:coil-network-ktor3:3.3.0")
    implementation("media.kamel:kamel-image:0.9.5")

    // Used by enableAppAutoUpdate() in the AKS base Activities
    implementation("com.google.android.play:app-update:2.1.0")
    // Powers AppsKitSDKUtils.askForRating() — AKS's built-in in-app review flow
    implementation("com.google.android.play:review:2.0.1")
    implementation("androidx.recyclerview:recyclerview:1.4.0")

    // IronSource core — AKS's base Activity classes call IronSource.onResume()/onPause()
    // unconditionally on every screen, so this is required even if you never select
    // IronSource as an ad network in the AKS portal.
    implementation("com.ironsource.sdk:mediationsdk:8.5.0")
}

Usa la misma versión de Ktor en todos los artefactos ktor-*: mezclar artefactos de Ktor 2.x y 3.x en el mismo classpath provoca fallos por incompatibilidad binaria en tiempo de ejecución.

Usa también en el resto de tu app las mismas versiones de corrutinas (1.7.3), serialización (1.9.0) y Firebase BOM (34.3.0) que utiliza AKS, en lugar de mantener una versión anterior en otra parte del grafo de dependencias. La BOM de Firebase ha introducido cambios incompatibles entre versiones principales (33.x → 34.x), y que Gradle resuelva silenciosamente el conflicto eligiendo la versión que «gana» no garantiza que las rutas de ejecución de AKS que llaman a estas bibliotecas mantengan la compatibilidad binaria. Estos son requisitos obligatorios, no simples recomendaciones.

1.3 SDK de partners de medición móvil (MMP) (siempre necesarios)

AKS inicializa automáticamente estos tres SDK a partir de las claves definidas en el portal de AKS / Firebase Remote Config. No los invocas directamente, pero el código compilado de AKS hace referencia a sus clases de forma incondicional, por lo que deben estar en tu classpath:

kotlin
dependencies {
    // AppsFlyer
    implementation("com.appsflyer:af-android-sdk:6.13.0")
    implementation("com.appsflyer:adrevenue:6.9.0")
    implementation("com.miui.referrer:homereferrer:1.0.0.6")
    implementation("com.android.installreferrer:installreferrer:2.2")

    // Adjust
    implementation("com.adjust.sdk:adjust-android:4.38.3")

    // Solar Engine (Reyun)
    implementation("com.reyun.solar.engine.oversea:solar-engine-core:1.3.1.4")
}

Si no tienes las claves de alguno de ellos en la configuración del portal de AKS, no pasa nada: AKS simplemente omite su inicialización en tiempo de ejecución. La dependencia debe seguir estando presente para que la app compile.

1.4 SDK de redes publicitarias / mediación

AKS incluye código de gestión para AdMob, AppLovin MAX y Chartboost Mediation (Helium) en el mismo AAR, además de IronSource (ya indicado arriba). La red que sirve cada anuncio se decide de forma remota (por formato de anuncio, con conmutación por error), así que la opción más segura —y la que utiliza la propia app de referencia de Pentabit— es incluirlas todas:

kotlin
dependencies {
    // ---- AdMob / Google Mobile Ads + mediation adapters ----
    implementation("com.google.android.gms:play-services-ads:24.4.0")
    implementation("com.google.ads.mediation:applovin:13.0.1.0")
    implementation("com.google.ads.mediation:ironsource:8.5.0.1")
    implementation("com.google.ads.mediation:chartboost:9.8.2.0")
    implementation("com.google.ads.mediation:vungle:7.4.2.0")
    implementation("com.google.ads.mediation:facebook:6.18.0.0")
    implementation("com.google.ads.mediation:mintegral:16.9.71.0")
    implementation("com.google.ads.mediation:pangle:6.4.0.4.0")
    implementation("com.google.ads.mediation:unity:4.12.5.0") {
        exclude(group = "com.google.android.gms", module = "play-services-cronet")
    }

    // ---- AppLovin MAX + adapters ----
    implementation("com.applovin:applovin-sdk:13.3.0")
    implementation("com.applovin.mediation:google-adapter:+")
    implementation("com.applovin.mediation:google-ad-manager-adapter:+")
    implementation("com.applovin.mediation:ironsource-adapter:8.7.0.0.0")
    implementation("com.applovin.mediation:facebook-adapter:+")
    implementation("com.applovin.mediation:vungle-adapter:+")
    implementation("com.applovin.mediation:mintegral-adapter:+")
    implementation("com.applovin.mediation:bytedance-adapter:6.5.0.8.1")
    implementation("com.applovin.mediation:unityads-adapter:+") {
        exclude(group = "com.google.android.gms", module = "play-services-cronet")
    }

    // ---- Chartboost Mediation (Helium) + adapters ----
    implementation("com.chartboost:chartboost-mediation-sdk:4.7.1")
    implementation("com.chartboost:chartboost-mediation-adapter-admob:4.22.3.0.4")
    implementation("com.chartboost:chartboost-mediation-adapter-applovin:4.12.0.0.0")
    implementation("com.chartboost:chartboost-mediation-adapter-ironsource:4.7.5.2.0.0")
    implementation("com.chartboost:chartboost-mediation-adapter-vungle:4.7.1.0.0")
    implementation("com.chartboost:chartboost-mediation-adapter-meta-audience-network:4.6.16.0.0")
    implementation("com.chartboost:chartboost-mediation-adapter-pangle:4.5.5.0.3.0")
}

Si tienes la certeza de que una red concreta (por ejemplo, Helium) nunca se activará en la configuración del portal de AKS, puedes eliminar su bloque. Ten en cuenta que la lógica interna de conmutación por error de AdNetwork en AKS puede dirigir las solicitudes a cualquiera de las opciones ADMOB, GAM, MAX, IRON_SOURCE o HELIUM para cada formato de anuncio, por lo que reducir esta lista limita la flexibilidad de la configuración remota.