From 6f4cf5674ed374350041d03e822ec46978f57ad8 Mon Sep 17 00:00:00 2001 From: Binondi Date: Thu, 3 Apr 2025 19:02:30 +0530 Subject: [PATCH] Bug Fix, Added Some More Calculation Features in Calculator Part. --- app/build.gradle.kts | 9 ++++- app/proguard-rules.pro | 85 +++++++++++++++++++++++++++++++++--------- 2 files changed, 75 insertions(+), 19 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index dad983e..42d9423 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -19,7 +19,14 @@ android { buildTypes { release { - isMinifyEnabled = false + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + debug { + isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 481bb43..e00f4d9 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,21 +1,70 @@ -# 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 +# Keep your MainActivity and Application class +-keep public class devs.org.calculator.activities.MainActivity +-keep public class devs.org.calculator.activities.SetupPasswordActivity +-keep public class devs.org.calculator.activities.HiddenVaultActivity +-keep public class devs.org.calculator.** { *; } -# 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 *; -#} +# Keep exp4j library since it's used for expression evaluation +-keep class net.objecthunter.exp4j.** { *; } +-dontwarn net.objecthunter.exp4j.** -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable +# Keep Google Material components +-keep class com.google.android.material.** { *; } +-dontwarn com.google.android.material.** -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file +# Keep Android X components +-keep class androidx.** { *; } +-keep interface androidx.** { *; } + +# Keep any classes with ViewBinding +-keep class devs.org.calculator.databinding.** { *; } + +# Keep any callback interfaces +-keep class devs.org.calculator.callbacks.** { *; } +-keep interface devs.org.calculator.callbacks.** { *; } + +# Keep classes used for regex pattern matching +-keep class java.util.regex.** { *; } + +# Keep annotation classes +-keepattributes *Annotation* +-keepattributes Signature +-keepattributes SourceFile,LineNumberTable + +# Keep Parcelable classes (might be needed for Intent extras) +-keep class * implements android.os.Parcelable { + public static final android.os.Parcelable$Creator *; +} + +# Keep FileManager classes since they work with storage permissions +-keep class devs.org.calculator.utils.FileManager { *; } + +# Keep DialogUtil since it's used for permission dialogs +-keep class devs.org.calculator.utils.DialogUtil { *; } + +# Keep PrefsUtil since it's used for password validation +-keep class devs.org.calculator.utils.PrefsUtil { *; } + +# General Android rules +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +# Keep any classes that use reflection +-keepattributes InnerClasses + +# Keep R classes and their fields +-keepclassmembers class **.R$* { + public static ; +} + +# Keep enums +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +# Keep specific activities with special code in onCreate +-keepclassmembers class * extends android.app.Activity { + public void onCreate(android.os.Bundle); +} \ No newline at end of file