diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index f1b4245..f9eba7c 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -19,3 +19,136 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile + +# ============================================================================= +# Capacitor Plugin Protection Rules +# ============================================================================= + +# Keep Capacitor Plugin annotations & your plugin facade +-keep class com.getcapacitor.** { *; } +-keep @com.getcapacitor.annotation.CapacitorPlugin class * { *; } +-keepclassmembers class ** { + @com.getcapacitor.annotation.PluginMethod *; +} + +# Keep DailyNotification plugin classes +-keep class com.timesafari.dailynotification.** { *; } + +# Keep plugin method names and signatures +-keepclassmembers class com.timesafari.dailynotification.DailyNotificationPlugin { + public *; +} + +# Keep all plugin manager classes +-keep class com.timesafari.dailynotification.*Manager { *; } +-keep class com.timesafari.dailynotification.*Storage { *; } +-keep class com.timesafari.dailynotification.*Receiver { *; } + +# Keep Room database classes +-keep class com.timesafari.dailynotification.storage.** { *; } +-keep class com.timesafari.dailynotification.database.** { *; } + +# Keep error handling classes +-keep class com.timesafari.dailynotification.*Error* { *; } +-keep class com.timesafari.dailynotification.*Exception* { *; } + +# Keep JWT and ETag managers +-keep class com.timesafari.dailynotification.*JWT* { *; } +-keep class com.timesafari.dailynotification.*ETag* { *; } + +# Keep performance and optimization classes +-keep class com.timesafari.dailynotification.*Performance* { *; } +-keep class com.timesafari.dailynotification.*Optimizer* { *; } + +# Keep rolling window and TTL classes +-keep class com.timesafari.dailynotification.*Rolling* { *; } +-keep class com.timesafari.dailynotification.*TTL* { *; } + +# Keep exact alarm and reboot recovery classes +-keep class com.timesafari.dailynotification.*Exact* { *; } +-keep class com.timesafari.dailynotification.*Reboot* { *; } +-keep class com.timesafari.dailynotification.*Recovery* { *; } + +# Keep enhanced fetcher classes +-keep class com.timesafari.dailynotification.*Enhanced* { *; } +-keep class com.timesafari.dailynotification.*Fetcher* { *; } + +# Keep migration classes +-keep class com.timesafari.dailynotification.*Migration* { *; } + +# Keep channel manager +-keep class com.timesafari.dailynotification.ChannelManager { *; } + +# Keep permission manager +-keep class com.timesafari.dailynotification.PermissionManager { *; } + +# Keep scheduler classes +-keep class com.timesafari.dailynotification.*Scheduler* { *; } + +# ============================================================================= +# Android System Classes +# ============================================================================= + +# Keep Android system classes used by the plugin +-keep class android.app.AlarmManager { *; } +-keep class android.app.NotificationManager { *; } +-keep class android.app.NotificationChannel { *; } +-keep class android.app.PendingIntent { *; } +-keep class androidx.work.WorkManager { *; } +-keep class androidx.core.app.NotificationCompat { *; } + +# Keep broadcast receiver classes +-keep class android.content.BroadcastReceiver { *; } +-keep class android.content.Intent { *; } + +# ============================================================================= +# Room Database Protection +# ============================================================================= + +# Keep Room database classes +-keep class androidx.room.** { *; } +-keep class * extends androidx.room.RoomDatabase { *; } +-keep @androidx.room.Entity class * { *; } +-keep @androidx.room.Dao class * { *; } + +# Keep Room database migrations +-keep class * extends androidx.room.migration.Migration { *; } + +# ============================================================================= +# Gson Protection (if used) +# ============================================================================= + +# Keep Gson classes if used for JSON serialization +-keep class com.google.gson.** { *; } +-keep class * implements com.google.gson.TypeAdapterFactory { *; } +-keep class * implements com.google.gson.JsonSerializer { *; } +-keep class * implements com.google.gson.JsonDeserializer { *; } + +# ============================================================================= +# Debugging and Development +# ============================================================================= + +# Keep debug information for development builds +-keepattributes SourceFile,LineNumberTable +-keepattributes Signature +-keepattributes Exceptions +-keepattributes InnerClasses +-keepattributes EnclosingMethod + +# Keep generic signatures for reflection +-keepattributes Signature + +# Keep annotations +-keepattributes *Annotation* + +# ============================================================================= +# Network and Security +# ============================================================================= + +# Keep network-related classes +-keep class java.net.** { *; } +-keep class javax.net.ssl.** { *; } + +# Keep security-related classes +-keep class java.security.** { *; } +-keep class javax.crypto.** { *; } diff --git a/test-apps/daily-notification-test/android/app/proguard-rules.pro b/test-apps/daily-notification-test/android/app/proguard-rules.pro index f1b4245..f9eba7c 100644 --- a/test-apps/daily-notification-test/android/app/proguard-rules.pro +++ b/test-apps/daily-notification-test/android/app/proguard-rules.pro @@ -19,3 +19,136 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile + +# ============================================================================= +# Capacitor Plugin Protection Rules +# ============================================================================= + +# Keep Capacitor Plugin annotations & your plugin facade +-keep class com.getcapacitor.** { *; } +-keep @com.getcapacitor.annotation.CapacitorPlugin class * { *; } +-keepclassmembers class ** { + @com.getcapacitor.annotation.PluginMethod *; +} + +# Keep DailyNotification plugin classes +-keep class com.timesafari.dailynotification.** { *; } + +# Keep plugin method names and signatures +-keepclassmembers class com.timesafari.dailynotification.DailyNotificationPlugin { + public *; +} + +# Keep all plugin manager classes +-keep class com.timesafari.dailynotification.*Manager { *; } +-keep class com.timesafari.dailynotification.*Storage { *; } +-keep class com.timesafari.dailynotification.*Receiver { *; } + +# Keep Room database classes +-keep class com.timesafari.dailynotification.storage.** { *; } +-keep class com.timesafari.dailynotification.database.** { *; } + +# Keep error handling classes +-keep class com.timesafari.dailynotification.*Error* { *; } +-keep class com.timesafari.dailynotification.*Exception* { *; } + +# Keep JWT and ETag managers +-keep class com.timesafari.dailynotification.*JWT* { *; } +-keep class com.timesafari.dailynotification.*ETag* { *; } + +# Keep performance and optimization classes +-keep class com.timesafari.dailynotification.*Performance* { *; } +-keep class com.timesafari.dailynotification.*Optimizer* { *; } + +# Keep rolling window and TTL classes +-keep class com.timesafari.dailynotification.*Rolling* { *; } +-keep class com.timesafari.dailynotification.*TTL* { *; } + +# Keep exact alarm and reboot recovery classes +-keep class com.timesafari.dailynotification.*Exact* { *; } +-keep class com.timesafari.dailynotification.*Reboot* { *; } +-keep class com.timesafari.dailynotification.*Recovery* { *; } + +# Keep enhanced fetcher classes +-keep class com.timesafari.dailynotification.*Enhanced* { *; } +-keep class com.timesafari.dailynotification.*Fetcher* { *; } + +# Keep migration classes +-keep class com.timesafari.dailynotification.*Migration* { *; } + +# Keep channel manager +-keep class com.timesafari.dailynotification.ChannelManager { *; } + +# Keep permission manager +-keep class com.timesafari.dailynotification.PermissionManager { *; } + +# Keep scheduler classes +-keep class com.timesafari.dailynotification.*Scheduler* { *; } + +# ============================================================================= +# Android System Classes +# ============================================================================= + +# Keep Android system classes used by the plugin +-keep class android.app.AlarmManager { *; } +-keep class android.app.NotificationManager { *; } +-keep class android.app.NotificationChannel { *; } +-keep class android.app.PendingIntent { *; } +-keep class androidx.work.WorkManager { *; } +-keep class androidx.core.app.NotificationCompat { *; } + +# Keep broadcast receiver classes +-keep class android.content.BroadcastReceiver { *; } +-keep class android.content.Intent { *; } + +# ============================================================================= +# Room Database Protection +# ============================================================================= + +# Keep Room database classes +-keep class androidx.room.** { *; } +-keep class * extends androidx.room.RoomDatabase { *; } +-keep @androidx.room.Entity class * { *; } +-keep @androidx.room.Dao class * { *; } + +# Keep Room database migrations +-keep class * extends androidx.room.migration.Migration { *; } + +# ============================================================================= +# Gson Protection (if used) +# ============================================================================= + +# Keep Gson classes if used for JSON serialization +-keep class com.google.gson.** { *; } +-keep class * implements com.google.gson.TypeAdapterFactory { *; } +-keep class * implements com.google.gson.JsonSerializer { *; } +-keep class * implements com.google.gson.JsonDeserializer { *; } + +# ============================================================================= +# Debugging and Development +# ============================================================================= + +# Keep debug information for development builds +-keepattributes SourceFile,LineNumberTable +-keepattributes Signature +-keepattributes Exceptions +-keepattributes InnerClasses +-keepattributes EnclosingMethod + +# Keep generic signatures for reflection +-keepattributes Signature + +# Keep annotations +-keepattributes *Annotation* + +# ============================================================================= +# Network and Security +# ============================================================================= + +# Keep network-related classes +-keep class java.net.** { *; } +-keep class javax.net.ssl.** { *; } + +# Keep security-related classes +-keep class java.security.** { *; } +-keep class javax.crypto.** { *; }