1-include proguard_kotlin.flags
2-keep class com.android.systemui.VendorServices
3
4# Needed to ensure callback field references are kept in their respective
5# owning classes when the downstream callback registrars only store weak refs.
6# Note that we restrict this to SysUISingleton classes, as other registering
7# classes should either *always* unregister or *never* register from their
8# constructor. We also keep callback class names for easier debugging.
9-keepnames @com.android.systemui.util.annotations.WeaklyReferencedCallback class *
10-keepnames class * extends @com.android.systemui.util.annotations.WeaklyReferencedCallback **
11-if @com.android.systemui.util.annotations.WeaklyReferencedCallback class *
12-keepclassmembers,allowaccessmodification @com.android.systemui.dagger.SysUISingleton class * {
13  <1> *;
14}
15-if class * extends @com.android.systemui.util.annotations.WeaklyReferencedCallback **
16-keepclassmembers,allowaccessmodification @com.android.systemui.dagger.SysUISingleton class * {
17  <1> *;
18}
19
20-keep class androidx.core.app.CoreComponentFactory
21
22# Keep the wm shell lib
23-keep class com.android.wm.shell.*
24# Keep the protolog group methods that are called by the generated code
25-keepclassmembers class com.android.wm.shell.protolog.ShellProtoLogGroup {
26    *;
27}
28
29# Prevent optimization or access modification of any referenced code that may
30# conflict with code in the bootclasspath.
31# TODO(b/222468116): Resolve such collisions in the build system.
32-keepnames class android.**.nano.** { *; }
33-keepnames class com.android.**.nano.** { *; }
34-keepnames class com.android.internal.protolog.** { *; }
35-keepnames class android.hardware.common.** { *; }
36
37# TODO(b/316553881): Statically linking flags into SystemUI and bootclasspath might not be a
38# good idea in the first place
39-keepnames class com.android.window.flags.Flags { public *; }
40
41
42# Allows proguard to make private and protected methods and fields public as
43# part of optimization. This lets proguard inline trivial getter/setter methods.
44-allowaccessmodification
45
46# Strip verbose logs.
47-assumenosideeffects class android.util.Log {
48  static *** v(...);
49  static *** isLoggable(...);
50}
51-assumenosideeffects class android.util.Slog {
52  static *** v(...);
53}
54-maximumremovedandroidloglevel 2
55