1-verbose
2# Use ProGuard only to get rid of unused classes
3-dontobfuscate
4-dontoptimize
5-keepattributes *
6
7# Preverification was introduced in Java 6 to enable faster classloading, but
8# dex doesn't use the java .class format, so it has no benefit and can cause
9# problems.
10-dontpreverify
11
12# Skipping analysis of some classes may make proguard strip something that's
13# needed.
14-dontskipnonpubliclibraryclasses
15
16# Parcel reflectively accesses this field.
17-keepclassmembers class * implements android.os.Parcelable {
18  public static *** CREATOR;
19}
20
21# Don't warn about Nullable and NonNull annotations
22-dontwarn org.jetbrains.annotations.*
23
24# Unexpected reference to missing service class: META-INF/services/javax.annotation.processing.Processor.
25-dontwarn javax.annotation.processing.Processor
26
27# Keep PreferenceController constructors
28-keepclassmembers public class * extends com.android.car.settings.common.PreferenceController {
29   public <init>(...);
30}
31
32# Keep QCItem constructors
33-keepclassmembers public class * extends com.android.car.settings.qc.SettingsQCItem {
34   public <init>(...);
35}
36
37# Keep QCBackgroundWorker constructors
38-keepclassmembers public class * extends com.android.car.settings.qc.SettingsQCBackgroundWorker {
39   public <init>(...);
40}
41
42# Keep fragments that are only created via xml
43-keep public class * extends com.android.car.settings.common.SettingsFragment
44-keep public class * extends com.android.car.settings.common.BaseFragment
45
46# Keep PreferenceControllers
47-keep public class * extends com.android.car.settings.common.PreferenceController
48