From 39ca2d60798e29ad50f4aff32fa712fc2387225f Mon Sep 17 00:00:00 2001 From: merkost Date: Sat, 22 Jul 2023 10:05:45 +1000 Subject: [PATCH] Added proguard-rules.pro for Kotlin Serialization --- app/proguard-rules.pro | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index e6c59860..2c52942d 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -4,3 +4,27 @@ @org.greenrobot.eventbus.Subscribe ; } -keep enum org.greenrobot.eventbus.ThreadMode { *; } + +# Keep `Companion` object fields of serializable classes. +# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects. +-if @kotlinx.serialization.Serializable class ** +-keepclassmembers class <1> { + static <1>$Companion Companion; +} + +# Keep `serializer()` on companion objects (both default and named) of serializable classes. +-if @kotlinx.serialization.Serializable class ** { + static **$* *; +} +-keepclassmembers class <2>$<3> { + kotlinx.serialization.KSerializer serializer(...); +} + +# Keep `INSTANCE.serializer()` of serializable objects. +-if @kotlinx.serialization.Serializable class ** { + public static ** INSTANCE; +} +-keepclassmembers class <1> { + public static <1> INSTANCE; + kotlinx.serialization.KSerializer serializer(...); +}