diff --git a/service/Android.bp b/service/Android.bp index 7d3b39ac3a..0a0036244c 100644 --- a/service/Android.bp +++ b/service/Android.bp @@ -223,6 +223,9 @@ java_defaults { name: "service-connectivity-defaults", sdk_version: "system_server_current", min_sdk_version: "30", + defaults: [ + "standalone-system-server-module-optimize-defaults", + ], // This library combines system server jars that have access to different bootclasspath jars. // Lower SDK service jars must not depend on higher SDK jars as that would let them // transitively depend on the wrong bootclasspath jars. Sources also cannot be added here as @@ -252,8 +255,6 @@ java_defaults { "com.android.tethering", ], optimize: { - enabled: true, - shrink: true, proguard_flags_files: ["proguard.flags"], }, lint: { strict_updatability_linting: true }, diff --git a/service/proguard.flags b/service/proguard.flags index f546e824ee..478566c259 100644 --- a/service/proguard.flags +++ b/service/proguard.flags @@ -1,15 +1,8 @@ -# Make sure proguard keeps all connectivity classes -# TODO: instead of keeping everything, consider listing only "entry points" -# (service loader, JNI registered methods, etc) and letting the optimizer do its job --keep class android.net.** { *; } --keep class !com.android.server.nearby.**,com.android.server.** { *; } -# Prevent proguard from stripping out any nearby-service and fast-pair-lite-protos fields. --keep class com.android.server.nearby.NearbyService { *; } +# Keep JNI registered methods +-keepclasseswithmembers,includedescriptorclasses class * { native ; } -# The lite proto runtime uses reflection to access fields based on the names in -# the schema, keep all the fields. -# This replicates the base proguard rule used by the build by default -# (proguard_basic_keeps.flags), but needs to be specified here because the -# com.google.protobuf package is jarjared to use a package prefix. --keepclassmembers class * extends **.com.google.protobuf.MessageLite { ; } +# Keep classes extending structured message. +-keepclassmembers public class * extends **.com.android.net.module.util.Struct { + *; +}