# Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile ### Gson ProGuard and R8 rules which are relevant for all users ### This file is automatically recognized by ProGuard and R8, see https://developer.android.com/build/shrink-code#configuration-files ### ### IMPORTANT: ### - These rules are additive; don't include anything here which is not specific to Gson (such as completely ### disabling obfuscation for all classes); the user would be unable to disable that then ### - These rules are not complete; users will most likely have to add additional rules for their specific ### classes, for example to disable obfuscation for certain fields or to keep no-args constructors ### # Keep generic signatures; needed for correct type resolution -keepattributes Signature # Keep Gson annotations # Note: Cannot perform finer selection here to only cover Gson annotations, see also https://stackoverflow.com/q/47515093 -keepattributes RuntimeVisibleAnnotations,AnnotationDefault ### The following rules are needed for R8 in "full mode" which only adheres to `-keepattribtues` if ### the corresponding class or field is matches by a `-keep` rule as well, see ### https://r8.googlesource.com/r8/+/refs/heads/main/compatibility-faq.md#r8-full-mode # Keep class TypeToken (respectively its generic signature) -keep class com.google.gson.reflect.TypeToken { *; } # Keep any (anonymous) classes extending TypeToken -keep,allowobfuscation class * extends com.google.gson.reflect.TypeToken # Keep classes with @JsonAdapter annotation -keep,allowobfuscation,allowoptimization @com.google.gson.annotations.JsonAdapter class * # Keep fields with @SerializedName annotation, but allow obfuscation of their names -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName ; } # Keep fields with any other Gson annotation # Also allow obfuscation, assuming that users will additionally use @SerializedName or # other means to preserve the field names -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.Expose ; @com.google.gson.annotations.JsonAdapter ; @com.google.gson.annotations.Since ; @com.google.gson.annotations.Until ; } # Keep no-args constructor of classes which can be used with @JsonAdapter # By default their no-args constructor is invoked to create an adapter instance -keepclassmembers class * extends com.google.gson.TypeAdapter { (); } -keepclassmembers class * implements com.google.gson.TypeAdapterFactory { (); } -keepclassmembers class * implements com.google.gson.JsonSerializer { (); } -keepclassmembers class * implements com.google.gson.JsonDeserializer { (); } # If a class is used in some way by the application, and has fields annotated with @SerializedName # and a no-args constructor, keep those fields and the constructor # Based on https://issuetracker.google.com/issues/150189783#comment11 # See also https://github.com/google/gson/pull/2420#discussion_r1241813541 for a more detailed explanation -if class * -keepclasseswithmembers,allowobfuscation,allowoptimization class <1> { (); @com.google.gson.annotations.SerializedName ; } -keep public class * implements com.bumptech.glide.module.GlideModule -keep class * extends com.bumptech.glide.module.AppGlideModule { (...); } -keep public enum com.bumptech.glide.load.ImageHeaderParser$** { **[] $VALUES; public *; } -keep class com.bumptech.glide.load.data.ParcelFileDescriptorRewinder$InternalRewinder { *** rewind(); } # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** # A resource is loaded with a relative path so the package of this class must be preserved. -adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* # OkHttp platform used only on JVM and when Conscrypt and other security providers are available. -dontwarn okhttp3.internal.platform.** -dontwarn org.conscrypt.** -dontwarn org.bouncycastle.** -dontwarn org.openjsse.** # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* # This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usage.html -dontusemixedcaseclassnames -verbose # Preference objects are inflated via reflection -keep public class androidx.preference.Preference { public (android.content.Context, android.util.AttributeSet); } -keep public class * extends androidx.preference.Preference { public (android.content.Context, android.util.AttributeSet); } # Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and # EnclosingMethod is required to use InnerClasses. -keepattributes Signature, InnerClasses, EnclosingMethod # Retrofit does reflection on method and parameter annotations. -keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations # Keep annotation default values (e.g., retrofit2.http.Field.encoded). -keepattributes AnnotationDefault # Retain service method parameters when optimizing. -keepclassmembers,allowshrinking,allowobfuscation interface * { @retrofit2.http.* ; } # Ignore annotation used for build tooling. -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement # Ignore JSR 305 annotations for embedding nullability information. -dontwarn javax.annotation.** # Guarded by a NoClassDefFoundError try/catch and only used when on the classpath. -dontwarn kotlin.Unit # Top-level functions that can only be used by Kotlin. -dontwarn retrofit2.KotlinExtensions -dontwarn retrofit2.KotlinExtensions$* # With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy # and replaces all potential values with null. Explicitly keeping the interfaces prevents this. -if interface * { @retrofit2.http.* ; } -keep,allowobfuscation interface <1> # Keep inherited services. -if interface * { @retrofit2.http.* ; } -keep,allowobfuscation interface * extends <1> # With R8 full mode generic signatures are stripped for classes that are not # kept. Suspend functions are wrapped in continuations where the type argument # is used. -keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation -keepattributes Signature -keep class kotlin.coroutines.Continuation # R8 full mode strips generic signatures from return types if not kept. -if interface * { @retrofit2.http.* public *** *(...); } -keep,allowoptimization,allowshrinking,allowobfuscation class <3> # With R8 full mode generic signatures are stripped for classes that are not kept. -keep,allowobfuscation,allowshrinking class retrofit2.Response # Keep generic signature of RxJava3 (R8 full mode strips signatures from non-kept items). -keep,allowobfuscation,allowshrinking class io.reactivex.rxjava3.core.Flowable -keep,allowobfuscation,allowshrinking class io.reactivex.rxjava3.core.Maybe -keep,allowobfuscation,allowshrinking class io.reactivex.rxjava3.core.Observable -keep,allowobfuscation,allowshrinking class io.reactivex.rxjava3.core.Single -if interface * { @retrofit2.http.* public *** *(...); } -keep,allowoptimization,allowshrinking,allowobfuscation class <3> -keep,allowoptimization,allowshrinking,allowobfuscation enum <3> -keep,allowoptimization,allowshrinking,allowobfuscation interface <3> -dontwarn java.nio.file.Files -dontwarn java.nio.file.Path -dontwarn java.nio.file.OpenOption -dontwarn com.google.devtools.build.android.desugar.runtime.ThrowableExtension -keep class io.agora.**{*;} -dontwarn org.codehaus.mojo.** -keepattributes Signature -keepattributes Exceptions -keepattributes *Annotation* -keepattributes RuntimeVisibleAnnotations -keepattributes RuntimeInvisibleAnnotations -keepattributes RuntimeVisibleParameterAnnotations -keepattributes RuntimeInvisibleParameterAnnotations -keepattributes EnclosingMethod -keep class androidx.recyclerview.widget.**{*;} -keep class androidx.viewpager2.widget.**{*;} -keep class kr.co.bootpay.core.** { *; } -keep class kr.co.pointclick.sdk.offerwall.core.consts.** {*;} -keep interface kr.co.pointclick.sdk.offerwall.core.consts.** {*;} -keep class kr.co.pointclick.sdk.offerwall.core.models.** {*;} -keep interface kr.co.pointclick.sdk.offerwall.core.models.** {*;} -keep class kr.co.pointclick.sdk.offerwall.core.PointClickAd {*;} -keep class kr.co.pointclick.sdk.offerwall.core.events.PackageReceiver {*;}