# ── Room entities & DAOs (reflection-based by Room) ── -keep class com.example.myapplication.data.ServerEntity { *; } -keep class com.example.myapplication.data.FavoriteEntity { *; } -keep class com.example.myapplication.data.WatchlistEntity { *; } -keep class com.example.myapplication.data.IconLibraryEntity { *; } -keep class com.example.myapplication.data.*Dao { *; } -keep class com.example.myapplication.data.AppDatabase { *; } # ── Gson / Retrofit (keep serialized field names) ── -keepattributes Signature -keepattributes *Annotation* -dontwarn sun.misc.** -keep class com.google.gson.** { *; } -keep class retrofit2.** { *; } -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName ; } -keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken -keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken # ── Keep Emby API models (Gson deserialization) ── -keep class com.example.myapplication.data.EmbyItem { *; } -keep class com.example.myapplication.data.EmbyServer { *; } -keep class com.example.myapplication.data.EmbyPerson { *; } -keep class com.example.myapplication.data.EmbyMediaStream { *; } -keep class com.example.myapplication.data.EmbyMediaSource { *; } -keep class com.example.myapplication.data.EmbyChapter { *; } -keep class com.example.myapplication.data.EmbyUserData { *; } -keep class com.example.myapplication.data.EmbyNamedReference { *; } -keep class com.example.myapplication.data.EmbyAuthRequest { *; } -keep class com.example.myapplication.data.EmbyAuthResponse { *; } -keep class com.example.myapplication.data.EmbyUser { *; } -keep class com.example.myapplication.data.EmbyMediaFoldersResponse { *; } -keep class com.example.myapplication.data.EmbyMediaFolder { *; } -keep class com.example.myapplication.data.EmbyItemsResponse { *; } -keep class com.example.myapplication.data.EmbyPlaybackInfoResponse { *; } -keep class com.example.myapplication.data.EmbyResourceStats { *; } # ── OkHttp ── -dontwarn okhttp3.** -dontwarn okio.** -keep class okhttp3.** { *; } # ── OkHttp Logging Interceptor ── -dontwarn okhttp3.logging.** # ── Coil ── -dontwarn coil.** # ── Media3 / ExoPlayer ── -keep class androidx.media3.** { *; } -dontwarn androidx.media3.** # ── Kyant Backdrop ── -keep class com.kyant.backdrop.** { *; } -dontwarn com.kyant.backdrop.** # ── Miuix ── -keep class top.yukonga.miuix.** { *; } -dontwarn top.yukonga.miuix.** # ── Palette ── -keep class androidx.palette.** { *; } # ── Strip debug/verbose logs in Release builds ── -assumenosideeffects class android.util.Log { public static int d(...); public static int v(...); } # Keep error and warning logs for crash reporting # Log.e and Log.w are intentionally NOT stripped