# GENERAL OPTIONS # turn on all optimizations except those that are known to cause problems on Android -optimizations !code/simplification/cast,!field/*,!class/merging/* -optimizationpasses 6 -allowaccessmodification -dontpreverify -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -keepattributes *Annotation* # For native methods, see http://proguard.sourceforge.net/manual/examples.html#native -keepclasseswithmembernames class * { native ; } # keep setters in Views so that animations can still work. # see http://proguard.sourceforge.net/manual/examples.html#beans -keepclassmembers public class * extends android.view.View { void set*(***); *** get*(); } # We want to keep methods in Activity that could be used in the XML attribute onClick -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } # For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepclassmembers class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator CREATOR; } -keepclassmembers class **.R$* { public static ; } # TUSKY SPECIFIC OPTIONS ## for okhttp -dontwarn javax.annotation.** -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase -dontwarn org.codehaus.mojo.animal_sniffer.* -dontwarn okhttp3.internal.platform.ConscryptPlatform ##for keep -dontwarn android.arch.util.paging.CountedDataSource -dontwarn android.arch.persistence.room.paging.LimitOffsetDataSource ## for retrofit -dontwarn retrofit2.** -keep class retrofit2.** { *; } -keepattributes Signature -keepattributes Exceptions -keepattributes *Annotation* -keepclasseswithmembers class * { @retrofit2.http.* ; } -keep class com.keylesspalace.tusky.entity.** { *; } -keep public enum com.keylesspalace.tusky.entity.*$** { **[] $VALUES; public *; } # preserve line numbers for crash reporting -keepattributes SourceFile,LineNumberTable -renamesourcefileattribute SourceFile # remove all logging from production apk -assumenosideeffects class android.util.Log { public static *** getStackTraceString(...); public static *** d(...); public static *** w(...); public static *** v(...); public static *** i(...); } # remove some kotlin overhead -assumenosideeffects class kotlin.jvm.internal.Intrinsics { static void checkParameterIsNotNull(java.lang.Object, java.lang.String); static void checkExpressionValueIsNotNull(java.lang.Object, java.lang.String); static void throwUninitializedPropertyAccessException(java.lang.String); } -dontwarn com.google.errorprone.annotations.* # without this emoji font downloading fails with AbstractMethodError -keep class * extends android.os.AsyncTask { public *; } # Glide -keep public class * implements com.bumptech.glide.module.GlideModule -keep public class * extends com.bumptech.glide.module.AppGlideModule -keep public enum com.bumptech.glide.load.ImageHeaderParser$** { **[] $VALUES; public *; }