diff --git a/app/build.gradle b/app/build.gradle index c6cc3504..2d45b169 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,12 +32,12 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } -// buildTypes { -// release { -// minifyEnabled true -// proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' -// } -// } + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } configurations { all*.exclude group: 'com.google.guava', module: 'listenablefuture' diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 3e1009ea..feb3988c 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -20,5 +20,38 @@ # hide the original source file name. #-renamesourcefileattribute SourceFile --keep class com.google.j2objc.annotations.** { *; } --dontwarn com.google.j2objc.annotations.** +# Realm + +-keep class io.realm.annotations.RealmModule +-keep @io.realm.annotations.RealmModule class * +-keep class io.realm.internal.Keep +-keep @io.realm.internal.Keep class * +-dontwarn javax.** +-dontwarn io.realm.** +-keep class net.pokeranalytics.android.model.** { *; } + +# Retrofit + +# 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 +# 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 +# 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> +