Apps Kit SDK logoApps Kit SDK
Документация · AppsKitSDK (AKS) — руководство по интеграции для Android

1. Зависимости

1.1 SDK AKS

Добавьте сам SDK в build.gradle.kts модуля приложения:

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

Замените ${LATEST_VERSION} последним тегом из релизов appskitsdk-android (или с бейджа JitPack в README этого репозитория), например v6.4.0.0.

AKS публикуется как набор отдельных файлов .aar, а не как модуль Maven с метаданными зависимостей, поэтому ни одна из его сторонних зависимостей не подключается транзитивно. Все перечисленные ниже зависимости нужно явно объявить в модуле приложения. Единственное исключение — SupportAKS (com.pentabit.aks_android_support_lib): эти классы уже включены непосредственно в артефакт appskitsdk-android, поэтому отдельно добавлять com.pentabit:aks-android-helpers не нужно.

1.2 Обязательные библиотеки (нужны всегда)

Скомпилированный код AKS напрямую ссылается на эти библиотеки, поэтому они необходимы независимо от того, какие рекламные сети вы включаете:

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

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

Используйте одну и ту же версию Ktor для всех артефактов ktor-*: смешивание артефактов Ktor 2.x и 3.x в одном classpath приводит к сбоям во время выполнения из-за бинарной несовместимости.

В остальной части приложения также используйте те же версии, что и AKS: coroutines (1.7.3), serialization (1.9.0), Firebase BOM (34.3.0) и SQLDelight (2.3.2). Не оставляйте старые версии в других частях графа зависимостей. Между мажорными версиями Firebase BOM (33.x → 34.x) были изменения, нарушающие совместимость. То, что Gradle автоматически выбирает «победившую» версию при разрешении зависимостей, не гарантирует бинарную совместимость кода AKS, вызывающего эти библиотеки. Это обязательные требования, а не просто рекомендации.

1.3 SDK партнёров по мобильной атрибуции (MMP) (нужны всегда)

AKS автоматически инициализирует эти три SDK с помощью ключей, заданных на портале AKS / в Firebase Remote Config. Вы не вызываете их напрямую, но скомпилированный код AKS содержит безусловные ссылки на их классы, поэтому они должны присутствовать в 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")
}

Если в конфигурации на портале AKS нет ключей для одного из этих SDK, это не проблема: AKS просто пропустит его инициализацию во время выполнения. При этом зависимость всё равно должна быть подключена, чтобы приложение собиралось.

1.4 SDK рекламных сетей и медиации

Помимо IronSource (уже указанного выше), AKS включает в тот же AAR код обработчиков для AdMob, AppLovin MAX и Chartboost Mediation (Helium). Какая сеть будет фактически показывать рекламу, определяется удалённо — отдельно для каждого рекламного формата, с переключением на резервную сеть при сбое. Поэтому самый надёжный подход — подключить их все. Именно так сделано в эталонном приложении самой Pentabit:

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

Если вы уверены, что определённая сеть (например, Helium) никогда не будет включена в конфигурации на портале AKS, её блок можно удалить. Но учитывайте, что внутренняя логика переключения на резервную сеть AdNetwork в AKS может направлять запросы в любую из сетей ADMOB, GAM, MAX, IRON_SOURCE или HELIUM для каждого рекламного формата. Поэтому сокращение этого списка ограничивает гибкость удалённой конфигурации.