-dontobfuscate -ignorewarnings -dontnote ** -dontwarn net.bytebuddy.** -dontwarn org.mockito.** # --- Apache --- -keep class org.apache.http.** { *; } -dontwarn org.apache.** # --- /Apache --- # --- Butter Knife --- # Finder.castParam() is stripped when not needed and ProGuard notes it # unnecessarily. When castParam() is needed, it's not stripped. e.g.: # # @OnItemSelected(value = R.id.history_entry_list) # void foo(ListView bar) { # L.d("baz"); # } -dontnote butterknife.internal.** # --- /Butter Knife --- # --- Retrofit2 --- # Platform calls Class.forName on types which do not exist on Android to determine platform. -dontnote retrofit2.Platform # Platform used when running on Java 8 VMs. Will not be used at runtime. -dontwarn retrofit2.Platform$Java8 # Retain generic type information for use by reflection by converters and adapters. -keepattributes Signature # Retain declared checked exceptions for use by a Proxy instance. -keepattributes Exceptions # Note: The model package right now seems to include some other classes that # are not used for serialization / deserialization over Gson. Hopefully # that's not a problem since it only prevents R8 from avoiding trimming # of few more classes. -keepclasseswithmembers class fr.free.nrw.commons.*.model.** { *; } -keepclasseswithmembers class fr.free.nrw.commons.actions.** { *; } -keepclasseswithmembers class fr.free.nrw.commons.auth.csrf.** { *; } -keepclasseswithmembers class fr.free.nrw.commons.auth.login.** { *; } -keepclasseswithmembers class fr.free.nrw.commons.wikidata.mwapi.** { *; } # --- /Retrofit --- # --- OkHttp + Okio --- -dontwarn okhttp3.** -dontwarn okio.** # --- /OkHttp + Okio --- # --- Gson --- # https://github.com/google/gson/blob/master/examples/android-proguard-example/proguard.cfg # Gson uses generic type information stored in a class file when working with fields. Proguard # removes such information by default, so configure it to keep all of it. -keepattributes Signature # For using GSON @Expose annotation -keepattributes *Annotation* # Gson specific classes -dontwarn sun.misc.** #-keep class com.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.google.gson.examples.android.model.** { *; } # Prevent proguard from stripping interface information from TypeAdapterFactory, # JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) -keep class * implements com.google.gson.TypeAdapterFactory -keep class * implements com.google.gson.JsonSerializer -keep class * implements com.google.gson.JsonDeserializer # --- /Gson --- # --- /logback --- -keep class ch.qos.** { *; } -keep class org.slf4j.** { *; } -keepattributes *Annotation* -dontwarn ch.qos.logback.core.net.* # --- /acra --- -keep class org.acra.** { *; } -keepattributes SourceFile,LineNumberTable -keepattributes *Annotation* # --- /recycler view --- -keep class androidx.recyclerview.widget.RecyclerView { public androidx.recyclerview.widget.RecyclerView$ViewHolder findViewHolderForPosition(int); } # --- Parcelable --- -keepclassmembers class * implements android.os.Parcelable { static ** CREATOR; }