1# TODO(b/210510433): Refine and optimize this configuration. Note that this
2# configuration is only used when `SOONG_CONFIG_ANDROID_SYSTEM_OPTIMIZE_JAVA=true`.
3
4# Preserve line number information for debugging stack traces.
5-keepattributes SourceFile,LineNumberTable
6
7# Allows making private and protected methods/fields public as part of
8# optimization. This enables inlining of trivial getter/setter methods.
9-allowaccessmodification
10
11# Process entrypoint
12-keep class com.android.server.SystemServer {
13  public static void main(java.lang.String[]);
14}
15
16# APIs referenced by dependent JAR files and modules
17-keep @interface android.annotation.SystemApi
18-keep @android.annotation.SystemApi class * {
19  public protected *;
20}
21-keepclasseswithmembers class * {
22  @android.annotation.SystemApi *;
23}
24
25# Derivatives of SystemService and other services created via reflection
26-keep,allowoptimization,allowaccessmodification class * extends com.android.server.SystemService {
27  public <methods>;
28}
29-keep,allowoptimization,allowaccessmodification class * extends com.android.server.devicepolicy.BaseIDevicePolicyManager {
30  public <init>(...);
31}
32-keep,allowoptimization,allowaccessmodification class com.android.server.wallpaper.WallpaperManagerService {
33  public <init>(...);
34}
35
36# Accessed from com.android.compos APEX
37-keep,allowoptimization,allowaccessmodification class com.android.internal.art.ArtStatsLog {
38   public static void write(...);
39}
40
41# Binder interfaces
42-keep,allowoptimization,allowaccessmodification class * extends android.os.IInterface
43-keep,allowoptimization,allowaccessmodification class * extends android.os.IHwInterface
44
45# Global entities normally kept through explicit Manifest entries
46# TODO(b/210510433): Revisit and consider generating from frameworks/base/core/res/AndroidManifest.xml,
47# by including that manifest with the library rule that triggers optimization.
48-keep,allowoptimization,allowaccessmodification class com.android.server.** extends android.app.Activity
49-keep,allowoptimization,allowaccessmodification class com.android.server.** extends android.app.Service
50-keep,allowoptimization,allowaccessmodification class com.android.server.** extends android.app.backup.BackupAgent
51-keep,allowoptimization,allowaccessmodification class com.android.server.** extends android.content.BroadcastReceiver
52-keep,allowoptimization,allowaccessmodification class com.android.server.** extends android.content.ContentProvider
53-keep,allowoptimization,allowaccessmodification class com.android.server.** extends android.preference.Preference
54-keep,allowoptimization,allowaccessmodification class com.android.server.** extends android.view.View {
55  public <init>(...);
56}
57
58# Various classes subclassed in or referenced via JNI in ethernet-service
59-keep public class android.net.** { *; }
60-keep,allowoptimization,allowaccessmodification class com.android.net.module.util.* { *; }
61-keep,allowoptimization,allowaccessmodification public class com.android.server.net.IpConfigStore { *; }
62-keep,allowoptimization,allowaccessmodification public class com.android.server.net.BaseNetworkObserver { *; }
63
64# Referenced via CarServiceHelperService in car-frameworks-service (avoid removing)
65-keep public class com.android.server.utils.Slogf { *; }
66
67# Referenced in wear-service
68# HIDL interfaces
69-keep public class android.hidl.base.** { *; }
70-keep public class android.hidl.manager.** { *; }
71-keep public class com.android.server.wm.WindowManagerInternal { *; }
72
73# Notification extractors
74# TODO(b/210510433): Revisit and consider generating from frameworks/base/core/res/res/values/config.xml.
75-keep,allowoptimization,allowaccessmodification public class com.android.server.notification.** implements com.android.server.notification.NotificationSignalExtractor
76
77# OEM provided DisplayAreaPolicy.Provider defined in frameworks/base/core/res/res/values/config.xml.
78-keep,allowoptimization,allowaccessmodification class com.android.server.wm.** implements com.android.server.wm.DisplayAreaPolicy$Provider
79
80# JNI keep rules
81# The global keep rule for native methods allows stripping of such methods if they're unreferenced
82# in Java. However, because system_server explicitly registers these methods from native code,
83# stripping them in Java can cause runtime issues. As such, conservatively keep all such methods in
84# system_server subpackages as long as the containing class is also kept or referenced.
85-keepclassmembers class com.android.server.** {
86  native <methods>;
87}
88# TODO(b/210510433): Revisit and fix with @Keep, or consider auto-generating from
89# frameworks/base/services/core/jni/onload.cpp.
90-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.BroadcastRadioService { *; }
91-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.Convert { *; }
92-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.Tuner { *; }
93-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.TunerCallback { *; }
94-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.GnssConfiguration$HalInterfaceVersion { *; }
95-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.GnssPowerStats { *; }
96-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.hal.GnssNative { *; }
97-keep,allowoptimization,allowaccessmodification class com.android.server.pm.PackageManagerShellCommandDataLoader { *; }
98-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorManagerInternal$RuntimeSensorCallback { *; }
99-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorManagerInternal$ProximityActiveListener { *; }
100-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorService { *; }
101-keep,allowoptimization,allowaccessmodification class com.android.server.soundtrigger_middleware.SoundTriggerMiddlewareImpl$AudioSessionProvider$AudioSession { *; }
102-keep,allowoptimization,allowaccessmodification class com.android.server.soundtrigger_middleware.ExternalCaptureStateTracker { *; }
103-keep,allowoptimization,allowaccessmodification class com.android.server.storage.AppFuseBridge { *; }
104-keep,allowoptimization,allowaccessmodification class com.android.server.tv.TvInputHal { *; }
105-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbAlsaJackDetector { *; }
106-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbAlsaMidiDevice { *; }
107-keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorController$OnVibrationCompleteListener { *; }
108-keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorManagerService$OnSyncedVibrationCompleteListener { *; }
109-keepclasseswithmembers,allowoptimization,allowaccessmodification class com.android.server.** {
110  *** *FromNative(...);
111}
112-keep,allowoptimization,allowaccessmodification class com.android.server.input.InputManagerService {
113  <methods>;
114}
115-keep,allowoptimization,allowaccessmodification class com.android.server.input.NativeInputManagerService$NativeImpl {
116  <methods>;
117}
118-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbHostManager {
119  *** usbDeviceRemoved(...);
120  *** usbDeviceAdded(...);
121}
122-keep,allowoptimization,allowaccessmodification class **.*NativeWrapper* { *; }
123
124# Miscellaneous reflection keep rules
125# TODO(b/210510433): Revisit and fix with @Keep.
126-keep,allowoptimization,allowaccessmodification class com.android.server.usage.AppStandbyController {
127  public <init>(...);
128}
129-keep,allowoptimization,allowaccessmodification class android.hardware.usb.gadget.** { *; }
130
131# Needed when optimizations enabled
132# TODO(b/210510433): Revisit and fix with @Keep.
133-keep,allowoptimization,allowaccessmodification class com.android.server.SystemService { *; }
134-keep,allowoptimization,allowaccessmodification class com.android.server.SystemService$TargetUser { *; }
135-keep,allowoptimization,allowaccessmodification class com.android.server.usage.StorageStatsManagerLocal { *; }
136-keep,allowoptimization,allowaccessmodification class com.android.internal.util.** { *; }
137-keep,allowoptimization,allowaccessmodification class android.os.** { *; }
138
139# CoverageService guards optional jacoco class references with a runtime guard, so we can safely
140# suppress build-time warnings.
141-dontwarn org.jacoco.agent.rt.*
142