# R8 is on for release (app/build.gradle.kts). Three things need keeping. # 1. kotlinx.serialization. The plugin generates a `Companion.serializer()` per # @Serializable class and reaches it reflectively; without these the DTOs decode to # nothing at runtime and every screen is empty, with no error that names the cause. -keepattributes *Annotation*, InnerClasses -dontnote kotlinx.serialization.** -keepclassmembers class tech.kadence.android.data.dto.** { *** Companion; } -keepclasseswithmembers class tech.kadence.android.data.dto.** { kotlinx.serialization.KSerializer serializer(...); } -keep,includedescriptorclasses class tech.kadence.android.data.dto.**$$serializer { *; } # 2. Nothing's Glyph SDK. The matrix is driven over AIDL and the shell instantiates # our toy service by name from the manifest, so neither end can be renamed. -keep class com.nothing.ketchum.** { *; } -keep class com.nothing.thirdparty.** { *; } -keep class tech.kadence.android.glyph.KadenceGlyphToy { *; } # 3. OkHttp ships optional hooks for platforms we do not target; R8 warns about the # missing classes rather than the reachable code. -dontwarn okhttp3.internal.platform.** -dontwarn org.conscrypt.** -dontwarn org.bouncycastle.** -dontwarn org.openjsse.**