From 6dfa10ffac4a4f9ae135246f98c5b71ccc6f1891 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Thu, 1 Oct 2026 02:02:03 +0600 Subject: [PATCH] Ensure tachiyomix public API is not removed by R8 Fixes #4027 --- app/proguard-rules.pro | 8 -------- source-api/consumer-proguard.pro | 33 +++++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 38eefa5a5..e3b2b24ff 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -18,14 +18,6 @@ -keep,allowoptimization class uy.kohesive.injekt.** { public protected *; } -keep,allowoptimization class com.squareup.zstd.** { public protected *; } -# From extensions-lib --keep,allowoptimization class eu.kanade.tachiyomi.network.interceptor.RateLimitInterceptorKt { public protected *; } --keep,allowoptimization class eu.kanade.tachiyomi.network.interceptor.SpecificHostRateLimitInterceptorKt { public protected *; } --keep,allowoptimization class eu.kanade.tachiyomi.network.NetworkHelper { public protected *; } --keep,allowoptimization class eu.kanade.tachiyomi.network.OkHttpExtensionsKt { public protected *; } --keep,allowoptimization class eu.kanade.tachiyomi.network.RequestsKt { public protected *; } --keep,allowoptimization class eu.kanade.tachiyomi.AppInfo { public protected *; } - -keepclassmembers class * implements java.io.Serializable { java.lang.Object writeReplace(); java.lang.Object readResolve(); diff --git a/source-api/consumer-proguard.pro b/source-api/consumer-proguard.pro index aa81da4bf..029089d70 100644 --- a/source-api/consumer-proguard.pro +++ b/source-api/consumer-proguard.pro @@ -1,5 +1,32 @@ --keep class eu.kanade.tachiyomi.source.model.** { public protected *; } --keep class eu.kanade.tachiyomi.source.online.** { public protected *; } --keep class eu.kanade.tachiyomi.source.** extends eu.kanade.tachiyomi.source.Source { public protected *; } +# Types extensions implement, extend or construct +-keep class eu.kanade.tachiyomi.source.Source { public protected *; } +-keep class eu.kanade.tachiyomi.source.Source$DefaultImpls { public protected *; } +-keep class eu.kanade.tachiyomi.source.CatalogueSource { public protected *; } +-keep class eu.kanade.tachiyomi.source.CatalogueSource$DefaultImpls { public protected *; } +-keep class eu.kanade.tachiyomi.source.ConfigurableSource { public protected *; } +-keep class eu.kanade.tachiyomi.source.SourceFactory { public protected *; } +-keep class eu.kanade.tachiyomi.source.UnmeteredSource { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.Filter { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.Filter$* { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.FilterList { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.MangasPage { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.Page { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.SChapter { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.SChapter$Companion { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.SManga { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.SManga$Companion { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.SMangaUpdate { public protected *; } +-keep class eu.kanade.tachiyomi.source.model.UpdateStrategy { public protected *; } +-keep class eu.kanade.tachiyomi.source.online.HttpSource { public protected *; } +-keep class eu.kanade.tachiyomi.source.online.ParsedHttpSource { public protected *; } +# Final classes and top-level functions extensions only call into +-keep,allowoptimization class eu.kanade.tachiyomi.AppInfo { public protected *; } +-keep,allowoptimization class eu.kanade.tachiyomi.network.HttpException { public protected *; } +-keep,allowoptimization class eu.kanade.tachiyomi.network.JavaScriptEngine { public protected *; } +-keep,allowoptimization class eu.kanade.tachiyomi.network.NetworkHelper { public protected *; } +-keep,allowoptimization class eu.kanade.tachiyomi.network.OkHttpExtensionsKt { public protected *; } +-keep,allowoptimization class eu.kanade.tachiyomi.network.RequestsKt { public protected *; } +-keep,allowoptimization class eu.kanade.tachiyomi.network.interceptor.RateLimitInterceptorKt { public protected *; } +-keep,allowoptimization class eu.kanade.tachiyomi.network.interceptor.SpecificHostRateLimitInterceptorKt { public protected *; } -keep,allowoptimization class eu.kanade.tachiyomi.util.JsoupExtensionsKt { public protected *; }