39 lines
1.6 KiB
Prolog
39 lines
1.6 KiB
Prolog
# ProGuard rules for ESP32 ALDL Dashboard
|
|
# Compose + Room + Kotlin Serialization + Navigation3
|
|
|
|
# --- Crash stack traces: preserve file names and line numbers ---
|
|
-keepattributes SourceFile,LineNumberTable
|
|
-renamesourcefileattribute SourceFile
|
|
|
|
# --- General reflection / generic type preservation ---
|
|
-keepattributes *Annotation*
|
|
-keepattributes Signature
|
|
-keepattributes InnerClasses
|
|
-keepattributes EnclosingMethod
|
|
|
|
# --- Room ---
|
|
# RoomDatabase subclass is instantiated by reflection
|
|
-keep class * extends androidx.room.RoomDatabase { *; }
|
|
# Keep all @Entity, @Dao, @Database annotated members
|
|
-keep @androidx.room.Entity class * { *; }
|
|
-keep @androidx.room.Dao interface * { *; }
|
|
-keep @androidx.room.Database class * { *; }
|
|
|
|
# --- Kotlin Serialization ---
|
|
# Only nav key objects annotated with @Serializable need explicit protection;
|
|
# the Kotlin compiler plugin generates keep rules for everything else.
|
|
-keep @kotlinx.serialization.Serializable class com.gronod.esp32aldldashboard.** { *; }
|
|
|
|
# --- Enums ---
|
|
# Preserve enum names used by Room, Bluetooth state, and conditional logic
|
|
-keepclassmembers enum * {
|
|
public static **[] values();
|
|
public static ** valueOf(java.lang.String);
|
|
}
|
|
|
|
# --- Application, Service, ViewModel, and Factory ---
|
|
# These are instantiated by the Android framework or ViewModelProvider via reflection
|
|
-keep class com.gronod.esp32aldldashboard.AldlApplication { *; }
|
|
-keep class com.gronod.esp32aldldashboard.bluetooth.BluetoothForegroundService { *; }
|
|
-keep class * extends androidx.lifecycle.ViewModel { *; }
|
|
-keep class * extends androidx.lifecycle.ViewModelProvider$Factory { *; } |