xref: /aosp_15_r20/frameworks/base/services/proguard.flags (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker# TODO(b/210510433): Refine and optimize this configuration. Note that this
2*d57664e9SAndroid Build Coastguard Worker# configuration is only used when `SOONG_CONFIG_ANDROID_SYSTEM_OPTIMIZE_JAVA=true`.
3*d57664e9SAndroid Build Coastguard Worker
4*d57664e9SAndroid Build Coastguard Worker# Preserve line number information for debugging stack traces.
5*d57664e9SAndroid Build Coastguard Worker-keepattributes SourceFile,LineNumberTable
6*d57664e9SAndroid Build Coastguard Worker
7*d57664e9SAndroid Build Coastguard Worker# Allows making private and protected methods/fields public as part of
8*d57664e9SAndroid Build Coastguard Worker# optimization. This enables inlining of trivial getter/setter methods.
9*d57664e9SAndroid Build Coastguard Worker-allowaccessmodification
10*d57664e9SAndroid Build Coastguard Worker
11*d57664e9SAndroid Build Coastguard Worker# Process entrypoint
12*d57664e9SAndroid Build Coastguard Worker-keep class com.android.server.SystemServer {
13*d57664e9SAndroid Build Coastguard Worker  public static void main(java.lang.String[]);
14*d57664e9SAndroid Build Coastguard Worker}
15*d57664e9SAndroid Build Coastguard Worker
16*d57664e9SAndroid Build Coastguard Worker# APIs referenced by dependent JAR files and modules
17*d57664e9SAndroid Build Coastguard Worker# TODO(b/300514883): Pull @SystemApi keep rules from system-api.pro.
18*d57664e9SAndroid Build Coastguard Worker-keep interface android.annotation.SystemApi
19*d57664e9SAndroid Build Coastguard Worker-keep @android.annotation.SystemApi class * {
20*d57664e9SAndroid Build Coastguard Worker  public protected *;
21*d57664e9SAndroid Build Coastguard Worker}
22*d57664e9SAndroid Build Coastguard Worker-keepclasseswithmembers class * {
23*d57664e9SAndroid Build Coastguard Worker  @android.annotation.SystemApi *;
24*d57664e9SAndroid Build Coastguard Worker}
25*d57664e9SAndroid Build Coastguard Worker# Also ensure nested classes are kept. This is overly conservative, but handles
26*d57664e9SAndroid Build Coastguard Worker# cases where such classes aren't explicitly marked @SystemApi.
27*d57664e9SAndroid Build Coastguard Worker-if @android.annotation.SystemApi class *
28*d57664e9SAndroid Build Coastguard Worker-keep public class <1>$** {
29*d57664e9SAndroid Build Coastguard Worker  public protected *;
30*d57664e9SAndroid Build Coastguard Worker}
31*d57664e9SAndroid Build Coastguard Worker
32*d57664e9SAndroid Build Coastguard Worker# Accessed from com.android.compos APEX
33*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.internal.art.ArtStatsLog {
34*d57664e9SAndroid Build Coastguard Worker   public static void write(...);
35*d57664e9SAndroid Build Coastguard Worker}
36*d57664e9SAndroid Build Coastguard Worker
37*d57664e9SAndroid Build Coastguard Worker# Various classes subclassed in or referenced via JNI in ethernet-service
38*d57664e9SAndroid Build Coastguard Worker-keep public class android.net.** { *; }
39*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.net.module.util.* { *; }
40*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification public class com.android.server.net.IpConfigStore { *; }
41*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification public class com.android.server.net.BaseNetworkObserver { *; }
42*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.display.feature.DisplayManagerFlags { *; }
43*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class android.app.admin.flags.FeatureFlagsImpl { *; }
44*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.input.NativeInputManagerService$NativeImpl { *; }
45*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.ThreadPriorityBooster { *; }
46*d57664e9SAndroid Build Coastguard Worker
47*d57664e9SAndroid Build Coastguard Worker# allow invoking start-service using class name in both apex and services jar.
48*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.ondeviceintelligence.OnDeviceIntelligenceManagerService { *; }
49*d57664e9SAndroid Build Coastguard Worker
50*d57664e9SAndroid Build Coastguard Worker# Keep all aconfig Flag class as they might be statically referenced by other packages
51*d57664e9SAndroid Build Coastguard Worker# An merge or inlining could lead to missing dependencies that cause run time errors
52*d57664e9SAndroid Build Coastguard Worker-keepclassmembernames class android.**.Flags, com.android.**.Flags { public *; }
53*d57664e9SAndroid Build Coastguard Worker
54*d57664e9SAndroid Build Coastguard Worker# Referenced via CarServiceHelperService in car-frameworks-service (avoid removing)
55*d57664e9SAndroid Build Coastguard Worker-keep public class com.android.server.utils.Slogf { *; }
56*d57664e9SAndroid Build Coastguard Worker
57*d57664e9SAndroid Build Coastguard Worker# Referenced in wear-service
58*d57664e9SAndroid Build Coastguard Worker-keep public class com.android.server.wm.WindowManagerInternal { *; }
59*d57664e9SAndroid Build Coastguard Worker
60*d57664e9SAndroid Build Coastguard Worker# JNI keep rules
61*d57664e9SAndroid Build Coastguard Worker# The global keep rule for native methods allows stripping of such methods if they're unreferenced
62*d57664e9SAndroid Build Coastguard Worker# in Java. However, because system_server explicitly registers these methods from native code,
63*d57664e9SAndroid Build Coastguard Worker# stripping them in Java can cause runtime issues. As such, conservatively keep all such methods in
64*d57664e9SAndroid Build Coastguard Worker# system_server subpackages as long as the containing class is also kept or referenced.
65*d57664e9SAndroid Build Coastguard Worker-keepclassmembers class com.android.server.** {
66*d57664e9SAndroid Build Coastguard Worker  native <methods>;
67*d57664e9SAndroid Build Coastguard Worker}
68*d57664e9SAndroid Build Coastguard Worker# TODO(b/210510433): Revisit and fix with @Keep, or consider auto-generating from
69*d57664e9SAndroid Build Coastguard Worker# frameworks/base/services/core/jni/onload.cpp.
70*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.BroadcastRadioService { *; }
71*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.Convert { *; }
72*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.Tuner { *; }
73*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.TunerCallback { *; }
74*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.GnssConfiguration$HalInterfaceVersion { *; }
75*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.GnssPowerStats { *; }
76*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.hal.GnssNative { *; }
77*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.pm.PackageManagerShellCommandDataLoader { *; }
78*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorManagerInternal$RuntimeSensorCallback { *; }
79*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorManagerInternal$ProximityActiveListener { *; }
80*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorService { *; }
81*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.soundtrigger_middleware.SoundTriggerMiddlewareImpl$AudioSessionProvider$AudioSession { *; }
82*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.soundtrigger_middleware.ExternalCaptureStateTracker { *; }
83*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.storage.AppFuseBridge { *; }
84*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.tv.TvInputHal { *; }
85*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbAlsaJackDetector { *; }
86*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbAlsaMidiDevice { *; }
87*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorController$OnVibrationCompleteListener { *; }
88*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorManagerService$VibratorManagerNativeCallbacks { *; }
89*d57664e9SAndroid Build Coastguard Worker-keepclasseswithmembers,allowoptimization,allowaccessmodification class com.android.server.** {
90*d57664e9SAndroid Build Coastguard Worker  *** *FromNative(...);
91*d57664e9SAndroid Build Coastguard Worker}
92*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.input.InputManagerService {
93*d57664e9SAndroid Build Coastguard Worker  <methods>;
94*d57664e9SAndroid Build Coastguard Worker}
95*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbHostManager {
96*d57664e9SAndroid Build Coastguard Worker  *** usbDeviceRemoved(...);
97*d57664e9SAndroid Build Coastguard Worker  *** usbDeviceAdded(...);
98*d57664e9SAndroid Build Coastguard Worker}
99*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class **.*NativeWrapper* { *; }
100*d57664e9SAndroid Build Coastguard Worker
101*d57664e9SAndroid Build Coastguard Worker# Miscellaneous reflection keep rules
102*d57664e9SAndroid Build Coastguard Worker# TODO(b/210510433): Revisit and fix with @Keep.
103*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class android.hardware.usb.gadget.** { *; }
104*d57664e9SAndroid Build Coastguard Worker
105*d57664e9SAndroid Build Coastguard Worker# Needed when optimizations enabled
106*d57664e9SAndroid Build Coastguard Worker# TODO(b/210510433): Revisit and fix with @Keep.
107*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.SystemService { *; }
108*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.SystemService$TargetUser { *; }
109*d57664e9SAndroid Build Coastguard Worker-keep,allowoptimization,allowaccessmodification class com.android.server.usage.StorageStatsManagerLocal { *; }
110*d57664e9SAndroid Build Coastguard Worker
111*d57664e9SAndroid Build Coastguard Worker# Prevent optimizations of any statically linked code that may shadow code in
112*d57664e9SAndroid Build Coastguard Worker# the bootclasspath. See also StrictJavaPackagesTest for details on exceptions.
113*d57664e9SAndroid Build Coastguard Worker# TODO(b/222468116): Resolve such collisions in the build system.
114*d57664e9SAndroid Build Coastguard Worker-keep public class android.gsi.** { *; }
115*d57664e9SAndroid Build Coastguard Worker-keep public class android.hidl.base.** { *; }
116*d57664e9SAndroid Build Coastguard Worker-keep public class android.hidl.manager.** { *; }
117*d57664e9SAndroid Build Coastguard Worker-keep public class android.os.** { *; }
118*d57664e9SAndroid Build Coastguard Worker-keep public class com.android.internal.util.** { *; }
119*d57664e9SAndroid Build Coastguard Worker-keep public class com.android.modules.utils.build.** { *; }
120*d57664e9SAndroid Build Coastguard Worker# Also suppress related duplicate type warnings for the above kept classes.
121*d57664e9SAndroid Build Coastguard Worker-dontwarn android.gsi.**
122*d57664e9SAndroid Build Coastguard Worker-dontwarn android.hidl.base.**
123*d57664e9SAndroid Build Coastguard Worker-dontwarn android.hidl.manager.**
124*d57664e9SAndroid Build Coastguard Worker-dontwarn android.os.**
125*d57664e9SAndroid Build Coastguard Worker-dontwarn com.android.internal.util.**
126*d57664e9SAndroid Build Coastguard Worker-dontwarn com.android.modules.utils.build.**
127*d57664e9SAndroid Build Coastguard Worker
128*d57664e9SAndroid Build Coastguard Worker# CoverageService guards optional jacoco class references with a runtime guard, so we can safely
129*d57664e9SAndroid Build Coastguard Worker# suppress build-time warnings.
130*d57664e9SAndroid Build Coastguard Worker-dontwarn org.jacoco.agent.rt.*
131