13
13
14
14
# Kotlinx Coroutines Rules
15
15
# https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/jvm/resources/META-INF/proguard/coroutines.pro
16
-
17
16
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
18
17
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
19
18
-keepclassmembers class kotlinx.coroutines.** {
68
67
-keep,allowshrinking,allowobfuscation class androidx.compose.runtime.SnapshotStateKt__DerivedStateKt { *; }
69
68
-keep class androidx.compose.material3.SliderDefaults { *; }
70
69
-dontnote androidx.**
70
+
71
+ # Kotlinx serialization, included by androidx.navigation
72
+ # https://github.com/Kotlin/kotlinx.serialization/blob/master/rules/common.pro
73
+ -if @kotlinx.serialization.Serializable class **
74
+ -keepclassmembers class <1> {
75
+ static <1>$* Companion;
76
+ }
77
+ -keepnames @kotlinx.serialization.internal.NamedCompanion class *
78
+ -if @kotlinx.serialization.internal.NamedCompanion class *
79
+ -keepclassmembernames class * {
80
+ static <1> *;
81
+ }
82
+ -if @kotlinx.serialization.Serializable class ** {
83
+ static **$* *;
84
+ }
85
+ -keepclassmembers class <2>$<3> {
86
+ kotlinx.serialization.KSerializer serializer(...);
87
+ }
88
+ # Keep `INSTANCE.serializer()` of serializable objects.
89
+ -if @kotlinx.serialization.Serializable class ** {
90
+ public static ** INSTANCE;
91
+ }
92
+ -keepclassmembers class <1> {
93
+ public static <1> INSTANCE;
94
+ kotlinx.serialization.KSerializer serializer(...);
95
+ }
96
+ -keepattributes RuntimeVisibleAnnotations,AnnotationDefault
97
+ -dontnote kotlinx.serialization.**
98
+ -dontwarn kotlinx.serialization.internal.ClassValueReferences
99
+ -keepclassmembers public class **$$serializer {
100
+ private ** descriptor;
101
+ }
102
+
103
+ # Kotlinx serialization, additional rules
104
+ # Fixes:
105
+ # Exception in thread "main" kotlinx.serialization.SerializationException: Serializer for class 'SomeClass' is not found.
106
+ # Please ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.
107
+ -keep class **$$serializer {
108
+ *;
109
+ }
0 commit comments