Apps Kit SDK logoApps Kit SDK
Docs · AppsKitSDK (AKS) — Android Integration Guide

4. ProGuard rules

The AKS AAR ships with an empty consumer ProGuard file, so none of the rules below are applied automatically — you need to add them yourself. Create/extend app/proguard-rules.pro with:

plaintext
-keepattributes Signature, InnerClasses, EnclosingMethod
-keepattributes Annotation
-keepattributes *Annotation*

# Kotlin / Kotlinx
-keep class kotlin.** { *; }
-keep class kotlinx.** { *; }
-keepclassmembers class kotlinx.coroutines.** { *; }
-keep,includedescriptorclasses class kotlinx.serialization.** { *; }
-keep,includedescriptorclasses @kotlinx.serialization.Serializable class * { *; }
-keepclassmembers class kotlinx.serialization.internal.** { *; }

# Ktor
-keep class io.ktor.** { *; }
-keepclassmembers class io.ktor.** { *; }
-keep interface io.ktor.** { *; }

# Compose (avoids recomposition crashes after minification)
-keep class androidx.compose.** { *; }
-dontwarn androidx.compose.**

# Google Play Services / Firebase / AdMob
-keep class com.google.android.gms.** { *; }
-keep class com.google.firebase.** { *; }
-dontwarn com.google.android.gms.**
-dontwarn com.google.firebase.**
-keep class com.google.android.gms.ads.** { *; }
-dontwarn com.google.android.gms.ads.**
-keep class com.google.android.gms.ads.mediation.** { *; }
-dontwarn com.google.android.gms.ads.mediation.**
-keep public class com.google.android.gms.ads.** { public *; }
-keep public class com.google.ads.** { public *; }
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final * NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
    com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
    java.lang.String getId();
    boolean isLimitAdTrackingEnabled();
}

# Mediation adapters (AdMob/MAX bidding partners)
-keep class com.google.ads.mediation.unity.** { *; }
-keep class com.google.ads.mediation.vungle.** { *; }
-keep class com.google.ads.mediation.facebook.** { *; }
-keep class com.google.ads.mediation.applovin.** { *; }
-keep class com.bytedance.sdk.openadsdk.** { *; }
-keep class com.facebook.** { *; }
-keep class com.chartboost.heliumsdk.** { *; }
-keep class com.chartboost.mediation.** { *; }

# Attribution / MMP SDKs
-keep class com.reyun.** { *; }
-keep interface com.reyun.** { *; }
-dontwarn com.reyun.**
-keep class route.** { *; }
-keep interface route.** { *; }
-keep public class com.android.installreferrer.** { *; }

# org.json (used by several mediation/MMP SDKs)
-keep class org.json.** { *; }
-dontwarn org.json.**

# Gson (only needed if you also use Gson elsewhere in your app)
-keep class com.google.gson.** { *; }
-keep class com.google.gson.reflect.TypeToken
-keep class * extends com.google.gson.reflect.TypeToken
-keep public class * implements java.lang.reflect.Type

# OEM referrer plugins (only relevant on Huawei/Honor devices)
-keep class com.huawei.hms.** { *; }
-keep class com.hihonor.** { *; }

Wire it into your app/build.gradle.kts:

kotlin
android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
}