# Cyrene ProGuard Rules # --- Keep Android components declared in manifest --- # These are instantiated by the Android system via reflection -keep class top.yeij.cyrene.CyreneApplication { *; } -keep class top.yeij.cyrene.MainActivity { *; } -keep class top.yeij.cyrene.service.** { *; } # --- Kotlin --- -keepattributes *Annotation* -keepattributes Signature -keepattributes InnerClasses -keepattributes EnclosingMethod -dontwarn kotlin.** # --- Retrofit --- -keep class retrofit2.** { *; } -dontwarn retrofit2.** # --- Gson --- -keep class com.google.gson.** { *; } -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName ; } # Keep all DTO classes and their members for Gson serialization -keep class top.yeij.cyrene.data.remote.dto.** { *; } -keepclassmembers class top.yeij.cyrene.data.remote.dto.** { *; } # --- OkHttp --- -dontwarn okhttp3.** -dontwarn okio.** # --- Room --- -keep class * extends androidx.room.RoomDatabase { *; } -keep class top.yeij.cyrene.data.local.entity.** { *; } -keepclassmembers class top.yeij.cyrene.data.local.entity.** { *; } -dontwarn androidx.room.paging.** # --- Koin --- -keep class org.koin.** { *; } -keep class top.yeij.cyrene.di.** { *; } -keepclassmembers class top.yeij.cyrene.di.** { *; } # --- Compose --- -dontwarn androidx.compose.** -keep class androidx.compose.** { *; } # --- Coroutines --- -keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {} -keepnames class kotlinx.coroutines.CoroutineExceptionHandler {} # --- Keep domain models (used in StateFlow, SharedFlow, etc.) --- -keep class top.yeij.cyrene.domain.model.** { *; } # --- Keep ViewModels (Koin instantiates via reflection) --- -keep class top.yeij.cyrene.viewmodel.** { *; } -keepclassmembers class top.yeij.cyrene.viewmodel.** { *; } # --- Keep repository implementations (Koin binds by interface) --- -keep class top.yeij.cyrene.data.repository.** { *; } -keep class top.yeij.cyrene.domain.repository.** { *; } # --- Keep PreferencesDataStore (Koin injects) --- -keep class top.yeij.cyrene.data.local.PreferencesDataStore { *; } # --- General AndroidX --- -keep class androidx.lifecycle.** { *; } -dontwarn androidx.lifecycle.**