added proguard for code obfuscation in android

This commit is contained in:
asif
2025-09-04 01:24:44 +05:30
parent d6a99ea295
commit aa5a7877e4
3 changed files with 685 additions and 78 deletions

View File

@@ -53,13 +53,13 @@ android {
buildTypes { buildTypes {
release { release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug signingConfig signingConfigs.debug
minifyEnabled true minifyEnabled true
shrinkResources true shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
'proguard-rules.pro'
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
} }
} }
} }

View File

@@ -1,77 +1,21 @@
# Keep Flutter embedding and plugin registrant (important)
-keep class io.flutter.embedding.** { *; }
-keep class io.flutter.plugins.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.app.** { *; } -keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
# Keep Application / Activity if you customized them (replace with your package name) -keep class io.flutter.util.** { *; }
# -keep class com.yourcompany.yourapp.MainActivity { *; } -keep class io.flutter.view.** { *; }
# -keep class com.yourcompany.yourapp.** { *; } -keep class io.flutter.embedding.** { *; }
-keep class io.flutter.embedding.engine.plugins.** { *; }
# Keep classes referenced from AndroidManifest via reflection or lifecycle
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
public <init>(android.content.Context, ...);
}
# Keep native entry points (JNI) if any (example)
-keepclasseswithmembernames class * {
native <methods>;
}
# Keep classes that use reflection heavily (OKHttp/Retrofit/Gson)
# Retrofit/OkHttp
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-keep class retrofit2.** { *; }
-keep interface retrofit2.** { *; }
# Gson (models accessed by reflection)
-keep class com.google.gson.** { *; }
-keepattributes Signature
-keepattributes *Annotation*
# Keep Firebase (if you use it)
-keep class com.google.firebase.** { *; } -keep class com.google.firebase.** { *; }
-keep class com.google.android.gms.** { *; } -keep class com.google.android.gms.** { *; }
# Please add these rules to your existing keep rules in order to suppress warnings.
# WorkManager (if used) # This is generated automatically by the Android Gradle plugin.
-keep class androidx.work.impl.background.systemjob.SystemJobService { *; } -dontwarn com.google.android.play.core.splitcompat.SplitCompatApplication
-keep class androidx.work.** { *; } -dontwarn com.google.android.play.core.splitinstall.SplitInstallException
-dontwarn com.google.android.play.core.splitinstall.SplitInstallManager
# Room/DB entities - if you use Room, keep annotations and entity classes -dontwarn com.google.android.play.core.splitinstall.SplitInstallManagerFactory
-keepclassmembers class * { -dontwarn com.google.android.play.core.splitinstall.SplitInstallRequest$Builder
@androidx.room.* <fields>; -dontwarn com.google.android.play.core.splitinstall.SplitInstallRequest
} -dontwarn com.google.android.play.core.splitinstall.SplitInstallSessionState
-keep class androidx.room.** { *; } -dontwarn com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener
-dontwarn com.google.android.play.core.tasks.OnFailureListener
# Keep classes loaded by reflection (e.g. through Class.forName) -dontwarn com.google.android.play.core.tasks.OnSuccessListener
-keepclassmembers,includedescriptorclasses class * { -dontwarn com.google.android.play.core.tasks.Task
public static <fields>;
public <init>(...);
}
# Keep Kotlin metadata (for Kotlin reflection)
-keep class kotlin.Metadata { *; }
# Keep names of classes annotated with @Keep
-keep @androidx.annotation.Keep class * { *; }
-keepclassmembers class * {
@androidx.annotation.Keep *;
}
# If using Gson TypeAdapterFactory via reflection
-keepclassmembers class * {
static ** typeAdapterFactory*(...);
}
# Don't remove debug/logging if you want (optional)
#-keep class android.util.Log { *; }
# Keep any generated plugin registrant classes if present (older projects)
-keep class io.flutter.plugins.GeneratedPluginRegistrant { *; }
# (Optional) Keep parcelable implementations if those are serialized dynamically
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

File diff suppressed because one or more lines are too long