Apps Kit SDK logoApps Kit SDK
Documentação · Integração com Android

1. Dependências

1.1 O SDK do AKS

Adicione o próprio SDK ao build.gradle.kts do módulo do app:

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

Substitua ${LATEST_VERSION} pela tag mais recente das versões do appskitsdk-android (ou do selo do JitPack no README desse repositório), por exemplo, v6.4.0.0.

O AKS é publicado como um conjunto de arquivos .aar avulsos (não como um módulo Maven com metadados de dependências), portanto nenhuma de suas dependências de terceiros é incluída de forma transitiva. Tudo o que está abaixo precisa ser declarado explicitamente no módulo do app. A única exceção é SupportAKS (com.pentabit.aks_android_support_lib) — essas classes já estão incluídas diretamente no próprio artefato appskitsdk-android, então você não deve adicionar com.pentabit:aks-android-helpers separadamente.

1.2 Bibliotecas obrigatórias (sempre necessárias)

Estas bibliotecas são referenciadas diretamente pelo código compilado do AKS, portanto são obrigatórias, independentemente das redes de anúncios que você habilitar:

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")
}

Mantenha a mesma versão do Ktor em todos os artefatos ktor-* — misturar artefatos do Ktor 2.x e 3.x no mesmo classpath causa falhas por incompatibilidade binária em tempo de execução.

No restante do app, use também as mesmas versões de corrotinas (1.7.3), serialização (1.9.0) e Firebase BOM (34.3.0) usadas pelo AKS, em vez de manter uma versão mais antiga em outro ponto do grafo de dependências. O BOM do Firebase teve alterações incompatíveis entre versões principais (33.x → 34.x), e o fato de o Gradle resolver silenciosamente para a versão que "vence" não garante que os trechos de código do AKS que chamam essas bibliotecas continuem com compatibilidade binária — esses requisitos são obrigatórios, não meras recomendações.

1.3 SDKs de parceiros de mensuração mobile (MMP) (sempre necessários)

O AKS inicializa automaticamente estes três SDKs a partir das chaves definidas no portal do AKS / Firebase Remote Config — você não os chama diretamente, mas suas classes são referenciadas incondicionalmente no código compilado do AKS, portanto eles precisam estar no 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")
}

Se você não tiver chaves para um deles na configuração do portal do AKS, não há problema — o AKS simplesmente ignora sua inicialização em tempo de execução. A dependência ainda precisa estar presente para compilar o app.

1.4 SDKs de redes de anúncios / mediação

O AKS inclui código de integração para AdMob, AppLovin MAX e Chartboost Mediation (Helium) no mesmo AAR, além do IronSource (já listado acima). A rede que efetivamente veicula um anúncio é definida remotamente (por formato de anúncio, com failover), então a abordagem mais segura — e a usada pelo próprio app de referência da Pentabit — é incluir todas elas:

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")
}

Se você tiver certeza de que uma determinada rede (por exemplo, Helium) nunca será habilitada na configuração do portal do AKS, poderá remover o bloco correspondente — mas saiba que a lógica interna de failover de AdNetwork do AKS pode direcionar as solicitações para qualquer uma das opções ADMOB, GAM, MAX, IRON_SOURCE ou HELIUM por formato de anúncio, portanto reduzir essa lista limita a flexibilidade da configuração remota.