diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6ee9f806f..fe8b103d2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -62,14 +62,12 @@ android { applicationIdSuffix = ".rt" //isMinifyEnabled = true //isShrinkResources = true - isZipAlignEnabled = true - setProguardFiles(listOf(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")) + setProguardFiles(listOf(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")) } named("release") { isMinifyEnabled = true isShrinkResources = true - isZipAlignEnabled = true - setProguardFiles(listOf(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")) + setProguardFiles(listOf(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")) } } diff --git a/app/proguard-android-optimize.txt b/app/proguard-android-optimize.txt new file mode 100644 index 000000000..ad490a86c --- /dev/null +++ b/app/proguard-android-optimize.txt @@ -0,0 +1,34 @@ +-allowaccessmodification +-dontusemixedcaseclassnames +-verbose + +-keepattributes *Annotation* + +-keepclasseswithmembernames,includedescriptorclasses class * { + native ; +} + +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keepclassmembers class * implements android.os.Parcelable { + public static final ** CREATOR; +} + +-keep class androidx.annotation.Keep + +-keep @androidx.annotation.Keep class * {*;} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep ; +} + +-keepclasseswithmembers class * { + @androidx.annotation.Keep (...); +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 87328a1cd..0fd6ed6d1 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -67,54 +67,22 @@ kotlinx.serialization.KSerializer serializer(...); } -# Madokami extension username and password crash fix --keepclassmembers class androidx.preference.EditTextPreference { - *** mOnBindEditTextListener; - *** mText; - public *; -} - -# Hitomi extension crash fix --keepclassmembers class rx.Single { - *** onSubscribe; - final *; - protected *; - public *; -} - - -# Manga Plus fixes --keep class kotlinx.serialization.** --keepclassmembers class kotlinx.serialization.** { - ; -} - -# Genkan.io crash fix --keepclassmembers class rx.Observable { - rx.Observable concatWith(rx.Observable); -} - -# Guya --keepclassmembers class rx.observables.BlockingObservable { - *** subscribe(rx.functions.Action1); -} +# Keep extension's common dependencies +-keep,allowoptimization class eu.kanade.tachiyomi.** { public protected *; } +-keep,allowoptimization class kotlin.** { public protected *; } +-keep,allowoptimization class okhttp3.** { public protected *; } +-keep,allowoptimization class rx.** { public protected *; } +-keep,allowoptimization class org.jsoup.** { public protected *; } +-keep,allowoptimization class com.google.gson.** { public protected *; } +-keep,allowoptimization class com.github.salomonbrys.kotson.** { public protected *; } +-keep,allowoptimization class com.squareup.duktape.** { public protected *; } +-keep,allowoptimization class androidx.preference.** { *; } +-keep,allowoptimization class okio.** { *; } +-keep,allowoptimization class kotlinx.serialization.** { *; } # RxJava 1.1.0 -dontwarn sun.misc.** --keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { - long producerIndex; - long consumerIndex; -} - --keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { - rx.internal.util.atomic.LinkedQueueNode producerNode; -} - --keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { - rx.internal.util.atomic.LinkedQueueNode consumerNode; -} - -dontnote rx.internal.util.PlatformDependent # === Reactive network: https://github.com/pwittchen/ReactiveNetwork/tree/v0.12.4#proguard-configuration @@ -151,8 +119,9 @@ # 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, +# Prevent proguard from stripping interface information from TypeAdapterFactory, TypeAdapter, # JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) +-keep class * extends com.google.gson.TypeAdapter -keep class * implements com.google.gson.TypeAdapterFactory -keep class * implements com.google.gson.JsonSerializer -keep class * implements com.google.gson.JsonDeserializer