diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index 226da85ae..715b8ab86 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -1,6 +1,50 @@ +# ======================== +# kotlinx.serialization +# ======================== -keepattributes *Annotation*, InnerClasses -dontnote kotlinx.serialization.AnnotationsKt + -keepclassmembers class kotlinx.serialization.json.** { *** Companion; } + +# Keep @Serializable classes and their generated serializers +-keepclassmembers @kotlinx.serialization.Serializable class ** { + *** Companion; + *** INSTANCE; + kotlinx.serialization.KSerializer serializer(...); +} -keepclasseswithmembers class io.picoclaw.android.** { kotlinx.serialization.KSerializer serializer(...); } + +# Keep generated $$serializer classes +-keepclassmembers class io.picoclaw.android.**$$serializer { + *** INSTANCE; + *; +} + +# Keep private ImageEntry used via Json.decodeFromString in MessageMapper +-keep class io.picoclaw.android.core.data.mapper.ImageEntry { *; } + +# ======================== +# Enums stored as strings in Room DB +# ======================== +-keepclassmembers enum io.picoclaw.android.core.domain.model.MessageSender { *; } +-keepclassmembers enum io.picoclaw.android.core.domain.model.MessageStatus { *; } + +# ======================== +# Ktor +# ======================== +-keep class io.ktor.** { *; } +-keepclassmembers class io.ktor.** { volatile ; } +-dontwarn io.ktor.** + +# ======================== +# OkHttp / Okio +# ======================== +-dontwarn okhttp3.** +-dontwarn okio.** + +# ======================== +# Koin / ViewModels +# ======================== +-keep class * extends androidx.lifecycle.ViewModel { (...); }