89 lines
5.1 KiB
Prolog
89 lines
5.1 KiB
Prolog
# Add project specific ProGuard rules here.
|
|
|
|
# ── Moshi ──────────────────────────────────────────────────────────────────────
|
|
# Keep Moshi-generated JsonAdapter classes
|
|
-keep class com.squareup.moshi.** { *; }
|
|
-keep class **JsonAdapter { *; }
|
|
-keepclassmembers class ** {
|
|
@com.squareup.moshi.Json <fields>;
|
|
@com.squareup.moshi.FromJson <methods>;
|
|
@com.squareup.moshi.ToJson <methods>;
|
|
}
|
|
# Keep @JsonClass-annotated classes and their generated adapters
|
|
-keepclasseswithmembers class * {
|
|
@com.squareup.moshi.JsonClass <init>(...);
|
|
}
|
|
|
|
# ── Gson ───────────────────────────────────────────────────────────────────────
|
|
# Keep TypeToken generic signatures (used in AddonConfigServer/RepositoryConfigServer)
|
|
-keep class com.google.gson.reflect.TypeToken { *; }
|
|
-keep class * extends com.google.gson.reflect.TypeToken
|
|
|
|
# ── Retrofit ───────────────────────────────────────────────────────────────────
|
|
# Keep generic signatures for Retrofit service methods
|
|
-keepattributes Signature
|
|
# Keep Retrofit service interfaces (must preserve generic return types)
|
|
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
|
|
-keep,allowobfuscation,allowshrinking class retrofit2.Response
|
|
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
|
|
# Keep all project API interfaces
|
|
-keep class com.nuvio.tv.data.remote.api.** { *; }
|
|
|
|
# ── OkHttp ─────────────────────────────────────────────────────────────────────
|
|
-dontwarn okhttp3.internal.platform.**
|
|
-dontwarn org.conscrypt.**
|
|
-dontwarn org.bouncycastle.**
|
|
-dontwarn org.openjsse.**
|
|
|
|
# ── Data classes (DTOs) ────────────────────────────────────────────────────────
|
|
# Keep all DTO classes used with Moshi/Retrofit
|
|
-keep class com.nuvio.tv.data.remote.dto.** { *; }
|
|
-keep class com.nuvio.tv.domain.model.** { *; }
|
|
|
|
# ── Kotlin ─────────────────────────────────────────────────────────────────────
|
|
-keepattributes *Annotation*
|
|
-keepattributes InnerClasses
|
|
-keepattributes EnclosingMethod
|
|
|
|
# Keep Kotlin Metadata for reflection
|
|
-keepattributes RuntimeVisibleAnnotations
|
|
|
|
# ── NanoHTTPD (used by local server) ───────────────────────────────────────────
|
|
-keep class fi.iki.elonen.** { *; }
|
|
# Keep server classes and their inner data classes (serialized with Gson)
|
|
-keep class com.nuvio.tv.core.server.** { *; }
|
|
|
|
#── QuickJS ────────────────────────────────────────────────────────────────────
|
|
# Keep quickjs-kt library classes for proper type conversion
|
|
-keep class com.dokar.quickjs.** { *; }
|
|
-keepclassmembers class com.dokar.quickjs.** { *; }
|
|
# Keep PluginRuntime and related classes for JS bindings
|
|
-keep class com.nuvio.tv.core.plugin.** { *; }
|
|
-keepclassmembers class com.nuvio.tv.core.plugin.** { *; }
|
|
|
|
# ── ExoPlayer / Media3 ────────────────────────────────────────────────────────
|
|
-dontwarn androidx.media3.**
|
|
-keep class androidx.media3.** { *; }
|
|
-keep interface androidx.media3.** { *; }
|
|
-keep class androidx.media.** { *; }
|
|
-keep class androidx.media3.decoder.** { *; }
|
|
-keep class androidx.media3.exoplayer.** { *; }
|
|
-keep class androidx.media3.ui.** { *; }
|
|
-keep class com.google.android.exoplayer2.** { *; }
|
|
-keep interface com.google.android.exoplayer2.** { *; }
|
|
-keep class com.google.android.exoplayer2.ext.** { *; }
|
|
|
|
# ── Supabase / Ktor / Kotlinx Serialization ───────────────────────────────────
|
|
-keep class io.github.jan.supabase.** { *; }
|
|
-keep class io.ktor.** { *; }
|
|
-dontwarn io.ktor.**
|
|
-keep class com.nuvio.tv.data.remote.supabase.** { *; }
|
|
# Keep @Serializable classes and their generated serializers
|
|
-keepclassmembers class * {
|
|
kotlinx.serialization.KSerializer serializer(...);
|
|
}
|
|
|
|
# ── General ────────────────────────────────────────────────────────────────────
|
|
# Keep line numbers for crash reports
|
|
-keepattributes SourceFile,LineNumberTable
|
|
-renamesourcefileattribute SourceFile
|