Tài liệu · Tích hợp Android
4. Quy tắc ProGuard
Gói AAR của AKS đi kèm một tệp ProGuard dành cho ứng dụng sử dụng thư viện (consumer ProGuard) trống, nên không có quy tắc nào dưới đây được áp dụng tự động — bạn cần tự thêm chúng. Tạo hoặc bổ sung vào app/proguard-rules.pro nội dung sau:
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.** { *; }Cấu hình sử dụng tệp này trong app/build.gradle.kts:
kotlin
android {
buildTypes {
getByName("release") {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}