# Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. -keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. -renamesourcefileattribute SourceFile # Repackage classes into the top-level. -repackageclasses # This is generated automatically by the Android Gradle plugin. -dontwarn org.bouncycastle.jsse.BCSSLParameters -dontwarn org.bouncycastle.jsse.BCSSLSocket -dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider -dontwarn org.conscrypt.Conscrypt$Version -dontwarn org.conscrypt.Conscrypt -dontwarn org.conscrypt.ConscryptHostnameVerifier -dontwarn org.openjsse.javax.net.ssl.SSLParameters -dontwarn org.openjsse.javax.net.ssl.SSLSocket -dontwarn org.openjsse.net.ssl.OpenJSSE # JNI (for native C++ code) - More Robust Rules -keepclasseswithmembers,allowshrinking class * { native ; } -keep class *JNI* { *; } # Hilt / Dagger - Updated Rules -keep class dagger.hilt.internal.aggregatedroot.codegen.* { (); } -keep class hilt_aggregated_deps.** { (); } -keep @dagger.hilt.InstallIn class * -keep @dagger.hilt.codegen.OriginatingElement class * -keep @dagger.hilt.android.HiltAndroidApp class * -keep @dagger.hilt.android.WithFragmentBindings class * -keep @dagger.assisted.Assisted class * -keep @dagger.assisted.AssistedFactory class * -keep @dagger.assisted.AssistedInject class * -keepclassmembers class * { @dagger.assisted.AssistedInject (...); } # Keep Dagger-generated component implementations. -keep class *_*_HiltComponents_* {} # Keep application's modules. -keep @dagger.Module class * { ; } # Keep bindings and their constructors. -keep @javax.inject.Inject class * { (...); ; } -keep @javax.inject.Singleton class * -keepclassmembers class * { @javax.inject.Inject (...); @javax.inject.Inject ; } # Keep Parcelable creators -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } # Keep Serializable classes -keep class * implements java.io.Serializable { *; } # Gson (for data/model classes that are serialized/deserialized) -keep class com.google.gson.Gson -keep class com.google.gson.GsonBuilder -keep class com.google.gson.reflect.TypeToken -keepclassmembers class com.laseroptek.raman.data.model.** { *; } -keepattributes Signature -keepattributes *Annotation* # Coroutines & StateFlow -keepnames class kotlinx.coroutines.internal.MainDispatcherFactory -keepnames class kotlinx.coroutines.flow.** -keepclassmembers class kotlinx.coroutines.flow.** { *; } -keep class kotlinx.coroutines.flow.StateFlowImpl { *; } # Room -keep class androidx.room.RoomDatabase -keepclassmembers class * extends androidx.room.RoomDatabase { (...); java.lang.Object Companion; } # Lottie -keep class com.airbnb.lottie.** { *; } # Glance App Widget -keepclasseswithmembers public class * extends androidx.glance.appwidget.GlanceAppWidgetReceiver -keepclasseswithmembers public class * extends androidx.glance.appwidget.GlanceAppWidget -keep public class * implements androidx.glance.state.GlanceStateDefinition { *; } # AndroidX Security Crypto -keep class androidx.security.crypto.** { *; } # ConstraintLayout Compose -keep public class androidx.constraintlayout.** { *; } # Snapper (from Chris Banes) -keep class dev.chrisbanes.snapper.** { *; } # Jetpack Compose -keep class androidx.compose.runtime.** { *; } -keepclasseswithmembers public class * { @androidx.compose.runtime.Composable ; } -keepclassmembers class **.R$* { public static ; } -keep class androidx.compose.ui.platform.AndroidCompositionLocals_androidKt { *; } # Keep the SerialPort class and its members from being obfuscated or removed, # as they are accessed from native code (JNI). -keep class com.laseroptek.raman.data.source.serial.SerialPort { ; ; }