Apps Kit SDK logoApps Kit SDK
Documentación · AppsKitSDK (AKS) — Guía de integración para Android

4. Reglas de ProGuard

El AAR de AKS incluye un archivo de reglas de ProGuard para aplicaciones consumidoras vacío, por lo que ninguna de las reglas siguientes se aplica automáticamente: debes añadirlas manualmente. Crea o amplía app/proguard-rules.pro con lo siguiente:

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.** { *; }

Configura su uso en app/build.gradle.kts:

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