when setting minifyEnabled to true causes nullpointerException
when I set minifyEnabled to false the problem gone
but I want to set minifyEnabled to true and shrinkResources to true to keep my app size small and delete unused classes
also try to use those lines in the ProGuard-rules.txt and the problem not solved
Code
Preference appearance = findPreference(AppearanceSettingsFragment.class.getSimpleName());
appearance.setOnPreferenceClickListener(prefClickListener);
Preference behavior = findPreference(BehaviorSettingsFragment.class.getSimpleName());
behavior.setOnPreferenceClickListener(prefClickListener);
Preference storage = findPreference(StorageSettingsFragment.class.getSimpleName());
storage.setOnPreferenceClickListener(prefClickListener);
Preference browser = findPreference(BrowserSettingsFragment.class.getSimpleName());
browser.setOnPreferenceClickListener(prefClickListener);
Preference limitations = findPreference(LimitationsSettingsFragment.class.getSimpleName());
limitations.setOnPreferenceClickListener(prefClickListener);
Config
-keep interface androidx.** { *; }
-keep class androidx.** { *; }
-keep class com.android.** { *; }
-keep class com.google.** { *; }
-keep class SettingsFragment.** { *; }
-keep class com.mix.downloader.model.* { *; }
-keepattributes Annotation,Signature
Above is what I have tried, still issue is not resolved.
Exception reported
FATAL EXCEPTION: main Process: com.mix.downloader, PID: 31333 java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.preference.Preference.setOnPreferenceClickListener(androidx.preference.Preference$OnPreferenceClickListener)' on a null object reference at com.mix.downloader.ui.settings.SettingsFragment.onViewCreated(SettingsFragment.java:115) at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:5) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:262) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:117) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:31) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:57) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:10) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:12) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:5) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:21) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:1) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435) at android.app.Activity.performStart(Activity.java:8231) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3845) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2309) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8587) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
You need to also
-keepall yourSettingsFragmentclasses since you're usingClass.class.getSimpleName()which will be affected by Proguard/R8. Guessing from your stacktrace, it will look something like this:-keep class com.mix.downloader.ui.settings.** { ; }