blob: 57afac308dc90d2d09792cb2d30b7476f86101a2 [file] [log] [blame]
Jared Duke0504e562022-02-02 15:25:22 -08001# TODO(b/210510433): Refine and optimize this configuration. Note that this
Jared Duke4514bdf2021-11-18 13:18:21 -08002# configuration is only used when `SOONG_CONFIG_ANDROID_SYSTEM_OPTIMIZE_JAVA=true`.
Jared Duke4514bdf2021-11-18 13:18:21 -08003
Jared Duke0504e562022-02-02 15:25:22 -08004# Preserve line number information for debugging stack traces.
5-keepattributes SourceFile,LineNumberTable
Jared Dukeedb13392021-12-14 11:10:20 -08006
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
Jared Duke0504e562022-02-02 15:25:22 -080011# Process entrypoint
12-keep class com.android.server.SystemServer {
13 public static void main(java.lang.String[]);
Jared Dukeedb13392021-12-14 11:10:20 -080014}
Jared Duke0504e562022-02-02 15:25:22 -080015
16# APIs referenced by dependent JAR files and modules
Jared Duked7769ef2023-11-03 02:02:49 +000017# TODO(b/300514883): Pull @SystemApi keep rules from system-api.pro.
18-keep interface android.annotation.SystemApi
Jared Duke0504e562022-02-02 15:25:22 -080019-keep @android.annotation.SystemApi class * {
20 public protected *;
21}
22-keepclasseswithmembers class * {
23 @android.annotation.SystemApi *;
24}
Jared Duked7769ef2023-11-03 02:02:49 +000025# Also ensure nested classes are kept. This is overly conservative, but handles
26# cases where such classes aren't explicitly marked @SystemApi.
27-if @android.annotation.SystemApi class *
28-keep public class <1>$** {
29 public protected *;
30}
Jared Duke0504e562022-02-02 15:25:22 -080031
32# Derivatives of SystemService and other services created via reflection
33-keep,allowoptimization,allowaccessmodification class * extends com.android.server.SystemService {
34 public <methods>;
35}
36-keep,allowoptimization,allowaccessmodification class * extends com.android.server.devicepolicy.BaseIDevicePolicyManager {
37 public <init>(...);
38}
39-keep,allowoptimization,allowaccessmodification class com.android.server.wallpaper.WallpaperManagerService {
40 public <init>(...);
41}
42
Alan Stokes8c9302c2022-05-06 18:35:12 +010043# Accessed from com.android.compos APEX
44-keep,allowoptimization,allowaccessmodification class com.android.internal.art.ArtStatsLog {
45 public static void write(...);
46}
47
Jared Duke0504e562022-02-02 15:25:22 -080048# Binder interfaces
49-keep,allowoptimization,allowaccessmodification class * extends android.os.IInterface
50-keep,allowoptimization,allowaccessmodification class * extends android.os.IHwInterface
51
Jared Duke0504e562022-02-02 15:25:22 -080052# Various classes subclassed in or referenced via JNI in ethernet-service
53-keep public class android.net.** { *; }
54-keep,allowoptimization,allowaccessmodification class com.android.net.module.util.* { *; }
55-keep,allowoptimization,allowaccessmodification public class com.android.server.net.IpConfigStore { *; }
56-keep,allowoptimization,allowaccessmodification public class com.android.server.net.BaseNetworkObserver { *; }
57
58# Referenced via CarServiceHelperService in car-frameworks-service (avoid removing)
59-keep public class com.android.server.utils.Slogf { *; }
60
Xin Guanee58f492022-08-02 02:56:54 +000061# Referenced in wear-service
62# HIDL interfaces
63-keep public class android.hidl.base.** { *; }
64-keep public class android.hidl.manager.** { *; }
65-keep public class com.android.server.wm.WindowManagerInternal { *; }
66
Jared Duke0504e562022-02-02 15:25:22 -080067# Notification extractors
68# TODO(b/210510433): Revisit and consider generating from frameworks/base/core/res/res/values/config.xml.
69-keep,allowoptimization,allowaccessmodification public class com.android.server.notification.** implements com.android.server.notification.NotificationSignalExtractor
70
Chris Li61339d82022-06-15 12:07:39 +080071# OEM provided DisplayAreaPolicy.Provider defined in frameworks/base/core/res/res/values/config.xml.
72-keep,allowoptimization,allowaccessmodification class com.android.server.wm.** implements com.android.server.wm.DisplayAreaPolicy$Provider
73
Jared Duke0504e562022-02-02 15:25:22 -080074# JNI keep rules
Jared Duke3027b4d2022-12-14 12:30:14 -080075# The global keep rule for native methods allows stripping of such methods if they're unreferenced
76# in Java. However, because system_server explicitly registers these methods from native code,
77# stripping them in Java can cause runtime issues. As such, conservatively keep all such methods in
78# system_server subpackages as long as the containing class is also kept or referenced.
79-keepclassmembers class com.android.server.** {
80 native <methods>;
81}
Jared Duke0504e562022-02-02 15:25:22 -080082# TODO(b/210510433): Revisit and fix with @Keep, or consider auto-generating from
83# frameworks/base/services/core/jni/onload.cpp.
84-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.BroadcastRadioService { *; }
85-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.Convert { *; }
86-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.Tuner { *; }
87-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.TunerCallback { *; }
88-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.GnssConfiguration$HalInterfaceVersion { *; }
89-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.GnssPowerStats { *; }
90-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.hal.GnssNative { *; }
Jared Dukedc50c852022-02-25 13:50:58 -080091-keep,allowoptimization,allowaccessmodification class com.android.server.pm.PackageManagerShellCommandDataLoader { *; }
Vladimir Komsiyski9d5084d2023-02-10 09:54:19 +010092-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorManagerInternal$RuntimeSensorCallback { *; }
Jared Duke0504e562022-02-02 15:25:22 -080093-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorManagerInternal$ProximityActiveListener { *; }
94-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorService { *; }
95-keep,allowoptimization,allowaccessmodification class com.android.server.soundtrigger_middleware.SoundTriggerMiddlewareImpl$AudioSessionProvider$AudioSession { *; }
96-keep,allowoptimization,allowaccessmodification class com.android.server.soundtrigger_middleware.ExternalCaptureStateTracker { *; }
97-keep,allowoptimization,allowaccessmodification class com.android.server.storage.AppFuseBridge { *; }
98-keep,allowoptimization,allowaccessmodification class com.android.server.tv.TvInputHal { *; }
99-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbAlsaJackDetector { *; }
Robert Wu8e7bf0f2023-01-26 01:44:07 +0000100-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbAlsaMidiDevice { *; }
Jared Duke0504e562022-02-02 15:25:22 -0800101-keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorController$OnVibrationCompleteListener { *; }
102-keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorManagerService$OnSyncedVibrationCompleteListener { *; }
103-keepclasseswithmembers,allowoptimization,allowaccessmodification class com.android.server.** {
104 *** *FromNative(...);
105}
106-keep,allowoptimization,allowaccessmodification class com.android.server.input.InputManagerService {
107 <methods>;
108}
Prabir Pradhanfa2b9572022-08-23 22:48:06 +0000109-keep,allowoptimization,allowaccessmodification class com.android.server.input.NativeInputManagerService$NativeImpl {
110 <methods>;
111}
Jared Duke0504e562022-02-02 15:25:22 -0800112-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbHostManager {
113 *** usbDeviceRemoved(...);
114 *** usbDeviceAdded(...);
115}
116-keep,allowoptimization,allowaccessmodification class **.*NativeWrapper* { *; }
117
118# Miscellaneous reflection keep rules
119# TODO(b/210510433): Revisit and fix with @Keep.
120-keep,allowoptimization,allowaccessmodification class com.android.server.usage.AppStandbyController {
121 public <init>(...);
122}
123-keep,allowoptimization,allowaccessmodification class android.hardware.usb.gadget.** { *; }
124
125# Needed when optimizations enabled
126# TODO(b/210510433): Revisit and fix with @Keep.
127-keep,allowoptimization,allowaccessmodification class com.android.server.SystemService { *; }
128-keep,allowoptimization,allowaccessmodification class com.android.server.SystemService$TargetUser { *; }
129-keep,allowoptimization,allowaccessmodification class com.android.server.usage.StorageStatsManagerLocal { *; }
130-keep,allowoptimization,allowaccessmodification class com.android.internal.util.** { *; }
131-keep,allowoptimization,allowaccessmodification class android.os.** { *; }
Jared Duke06689ad2022-09-07 12:24:36 -0700132
133# CoverageService guards optional jacoco class references with a runtime guard, so we can safely
134# suppress build-time warnings.
135-dontwarn org.jacoco.agent.rt.*