Refine system-server Proguard config for shrinking
This CL yields a basic, if unoptimized, set of Proguard rules for shrinking system_server. These fall largely into three categories: * Code referenced via JNI * Code referenced via explicit reflection (runtime .jar loading) * Code referenced via implicit reflection (binder/services/etc...) Follow-up work will tackle specific areas to make the rules more maintainable and compact as we work to enable shrinking by default for system_server. Bug: 210510433 Test: SYSTEM_OPTIMIZE_JAVA=true m + manual testing Change-Id: Iea3182c0536dbf7597e452f96cc33b4ab71dce96
This commit is contained in:
parent
fa9d5b2e03
commit
0504e561d6
@ -1,21 +1,105 @@
|
||||
# TODO(b/196084106): Refine and optimize this configuration. Note that this
|
||||
# TODO(b/210510433): Refine and optimize this configuration. Note that this
|
||||
# configuration is only used when `SOONG_CONFIG_ANDROID_SYSTEM_OPTIMIZE_JAVA=true`.
|
||||
-keep,allowoptimization,allowaccessmodification class ** {
|
||||
!synthetic *;
|
||||
}
|
||||
|
||||
# Various classes subclassed in ethernet-service (avoid marking final).
|
||||
-keep public class android.net.** { *; }
|
||||
|
||||
# Referenced via CarServiceHelperService in car-frameworks-service (avoid removing).
|
||||
-keep public class com.android.server.utils.Slogf { *; }
|
||||
# Preserve line number information for debugging stack traces.
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# Allows making private and protected methods/fields public as part of
|
||||
# optimization. This enables inlining of trivial getter/setter methods.
|
||||
-allowaccessmodification
|
||||
|
||||
# Disallow accessmodification for soundtrigger classes. Logging via reflective
|
||||
# public member traversal can cause infinite loops. See b/210901706.
|
||||
-keep,allowoptimization class com.android.server.soundtrigger_middleware.** {
|
||||
!synthetic *;
|
||||
# Process entrypoint
|
||||
-keep class com.android.server.SystemServer {
|
||||
public static void main(java.lang.String[]);
|
||||
}
|
||||
|
||||
# APIs referenced by dependent JAR files and modules
|
||||
-keep @interface android.annotation.SystemApi
|
||||
-keep @android.annotation.SystemApi class * {
|
||||
public protected *;
|
||||
}
|
||||
-keepclasseswithmembers class * {
|
||||
@android.annotation.SystemApi *;
|
||||
}
|
||||
|
||||
# Derivatives of SystemService and other services created via reflection
|
||||
-keep,allowoptimization,allowaccessmodification class * extends com.android.server.SystemService {
|
||||
public <methods>;
|
||||
}
|
||||
-keep,allowoptimization,allowaccessmodification class * extends com.android.server.devicepolicy.BaseIDevicePolicyManager {
|
||||
public <init>(...);
|
||||
}
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.wallpaper.WallpaperManagerService {
|
||||
public <init>(...);
|
||||
}
|
||||
|
||||
# Binder interfaces
|
||||
-keep,allowoptimization,allowaccessmodification class * extends android.os.IInterface
|
||||
-keep,allowoptimization,allowaccessmodification class * extends android.os.IHwInterface
|
||||
|
||||
# Global entities normally kept through explicit Manifest entries
|
||||
# TODO(b/210510433): Revisit and consider generating from frameworks/base/core/res/AndroidManifest.xml,
|
||||
# by including that manifest with the library rule that triggers optimization.
|
||||
-keep,allowoptimization,allowaccessmodification class * extends android.app.backup.BackupAgent
|
||||
-keep,allowoptimization,allowaccessmodification class * extends android.content.BroadcastReceiver
|
||||
-keep,allowoptimization,allowaccessmodification class * extends android.content.ContentProvider
|
||||
|
||||
# Various classes subclassed in or referenced via JNI in ethernet-service
|
||||
-keep public class android.net.** { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.net.module.util.* { *; }
|
||||
-keep,allowoptimization,allowaccessmodification public class com.android.server.net.IpConfigStore { *; }
|
||||
-keep,allowoptimization,allowaccessmodification public class com.android.server.net.BaseNetworkObserver { *; }
|
||||
|
||||
# Referenced via CarServiceHelperService in car-frameworks-service (avoid removing)
|
||||
-keep public class com.android.server.utils.Slogf { *; }
|
||||
|
||||
# Notification extractors
|
||||
# TODO(b/210510433): Revisit and consider generating from frameworks/base/core/res/res/values/config.xml.
|
||||
-keep,allowoptimization,allowaccessmodification public class com.android.server.notification.** implements com.android.server.notification.NotificationSignalExtractor
|
||||
|
||||
# JNI keep rules
|
||||
# TODO(b/210510433): Revisit and fix with @Keep, or consider auto-generating from
|
||||
# frameworks/base/services/core/jni/onload.cpp.
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.BroadcastRadioService { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.Convert { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.Tuner { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.broadcastradio.hal1.TunerCallback { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.GnssConfiguration$HalInterfaceVersion { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.GnssPowerStats { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.location.gnss.hal.GnssNative { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorManagerInternal$ProximityActiveListener { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.sensors.SensorService { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.soundtrigger_middleware.SoundTriggerMiddlewareImpl$AudioSessionProvider$AudioSession { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.soundtrigger_middleware.ExternalCaptureStateTracker { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.storage.AppFuseBridge { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.tv.TvInputHal { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbAlsaJackDetector { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbMidiDevice { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorController$OnVibrationCompleteListener { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.vibrator.VibratorManagerService$OnSyncedVibrationCompleteListener { *; }
|
||||
-keepclasseswithmembers,allowoptimization,allowaccessmodification class com.android.server.** {
|
||||
*** *FromNative(...);
|
||||
}
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.input.InputManagerService {
|
||||
<methods>;
|
||||
}
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.usb.UsbHostManager {
|
||||
*** usbDeviceRemoved(...);
|
||||
*** usbDeviceAdded(...);
|
||||
}
|
||||
-keep,allowoptimization,allowaccessmodification class **.*NativeWrapper* { *; }
|
||||
|
||||
# Miscellaneous reflection keep rules
|
||||
# TODO(b/210510433): Revisit and fix with @Keep.
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.usage.AppStandbyController {
|
||||
public <init>(...);
|
||||
}
|
||||
-keep,allowoptimization,allowaccessmodification class android.hardware.usb.gadget.** { *; }
|
||||
|
||||
# Needed when optimizations enabled
|
||||
# TODO(b/210510433): Revisit and fix with @Keep.
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.SystemService { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.SystemService$TargetUser { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.server.usage.StorageStatsManagerLocal { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class com.android.internal.util.** { *; }
|
||||
-keep,allowoptimization,allowaccessmodification class android.os.** { *; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user