1. Dependencias
1.1 El SDK de AKS
Añade el SDK en el archivo build.gradle.kts del módulo de la app:
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 metadatos de dependencias), por lo que ninguna de sus dependencias de terceros se incluye de forma transitiva. Debes declarar explícitamente todo lo que se indica a continuación 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, así 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 habilites:
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")
// SQLDelight — backs AKS's own local analytics database (AksLocalDbManager). It's
// referenced directly by AKS's compiled code, and — like every other dependency in this
// guide — carries no dependency metadata on the JitPack AAR (bare .pom, no .module), so
// omitting it doesn't fail the build, it crashes at runtime the first time
// AppsKitSDK.initialize() runs: NoClassDefFoundError: app/cash/sqldelight/Transacter.
implementation("app.cash.sqldelight:runtime:2.3.2")
implementation("app.cash.sqldelight:android-driver:2.3.2")
// 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")
}Mantén 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 las mismas versiones que AKS de coroutines (
1.7.3), serialization (1.9.0), Firebase BOM (34.3.0) y SQLDelight (2.3.2) en el resto de tu app, 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 el hecho de que Gradle resuelva silenciosamente el conflicto a favor de la versión que «gane» 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 llamas directamente, pero el código compilado de AKS hace referencia a sus clases de forma incondicional, por lo que deben estar en tu classpath:
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 claves para alguno de ellos en la configuración del portal de AKS, no hay problema: AKS simplemente omite su inicialización en tiempo de ejecución. La dependencia debe seguir presente para que la app se compile.
1.4 SDK de redes publicitarias / mediación
AKS incluye el código de los controladores de 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), por lo que la opción más segura —y la que utiliza la propia app de referencia de Pentabit— es incluirlas todas:
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 determinada (por ejemplo, Helium) nunca se habilitará en la configuración del portal de AKS, puedes eliminar su bloque. Solo ten en cuenta que la lógica interna de conmutación por error de AdNetwork de AKS puede redirigir las solicitudes a cualquiera de las redes 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.