diff options
| author | 2024-06-26 16:47:07 +0000 | |
|---|---|---|
| committer | 2024-06-26 16:47:07 +0000 | |
| commit | 2c0d53917f30b67cff4ef5df9df9563c32a5ee31 (patch) | |
| tree | 04768345ba2ec6a4ae832f30fd0bd1c20269aa3c | |
| parent | 0928b907008a7e2cf48b2ed951cb5b4c65be8774 (diff) | |
| parent | 06fcabde6a3625f4080ac6b71fce894948eee955 (diff) | |
Merge "Clean up reflection-related services keep rules" into main
| -rw-r--r-- | apex/jobscheduler/service/Android.bp | 1 | ||||
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java | 4 | ||||
| -rw-r--r-- | services/Android.bp | 1 | ||||
| -rw-r--r-- | services/core/Android.bp | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/notification/RankingHelper.java | 12 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wallpaper/WallpaperManagerService.java | 10 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayAreaPolicy.java | 11 | ||||
| -rw-r--r-- | services/proguard.flags | 16 |
8 files changed, 39 insertions, 17 deletions
diff --git a/apex/jobscheduler/service/Android.bp b/apex/jobscheduler/service/Android.bp index ace56d42ddd1..06c7d64d1708 100644 --- a/apex/jobscheduler/service/Android.bp +++ b/apex/jobscheduler/service/Android.bp @@ -24,6 +24,7 @@ java_library { "app-compat-annotations", "error_prone_annotations", "framework", + "keepanno-annotations", "services.core", "unsupportedappusage", ], diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java index 19bc7160e16a..613678bedf8a 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java @@ -130,6 +130,8 @@ import com.android.server.AppSchedulingModuleThread; import com.android.server.LocalServices; import com.android.server.pm.pkg.AndroidPackage; import com.android.server.usage.AppIdleHistory.AppUsageHistory; +import com.android.tools.r8.keepanno.annotations.KeepItemKind; +import com.android.tools.r8.keepanno.annotations.UsedByReflection; import libcore.util.EmptyArray; @@ -588,6 +590,8 @@ public class AppStandbyController } } + // This constructor is reflectively invoked from framework code in AppStandbyInternal. + @UsedByReflection(kind = KeepItemKind.CLASS_AND_METHODS) public AppStandbyController(Context context) { this(new Injector(context, AppSchedulingModuleThread.get().getLooper())); } diff --git a/services/Android.bp b/services/Android.bp index 0fbbd16b1ed9..a0d345430a4a 100644 --- a/services/Android.bp +++ b/services/Android.bp @@ -239,6 +239,7 @@ java_library { libs: [ "android.hidl.manager-V1.0-java", "framework-tethering.stubs.module_lib", + "keepanno-annotations", "service-art.stubs.system_server", "service-permission.stubs.system_server", "service-rkp.stubs.system_server", diff --git a/services/core/Android.bp b/services/core/Android.bp index 827c7b305e4a..fa323fd04837 100644 --- a/services/core/Android.bp +++ b/services/core/Android.bp @@ -182,6 +182,7 @@ java_library_static { "android.hardware.vibrator-V2-java", "app-compat-annotations", "framework-tethering.stubs.module_lib", + "keepanno-annotations", "service-art.stubs.system_server", "service-permission.stubs.system_server", "service-rkp.stubs.system_server", diff --git a/services/core/java/com/android/server/notification/RankingHelper.java b/services/core/java/com/android/server/notification/RankingHelper.java index 773d10b1f076..478868ba6a73 100644 --- a/services/core/java/com/android/server/notification/RankingHelper.java +++ b/services/core/java/com/android/server/notification/RankingHelper.java @@ -25,6 +25,10 @@ import android.util.ArrayMap; import android.util.Slog; import android.util.proto.ProtoOutputStream; +import com.android.tools.r8.keepanno.annotations.KeepItemKind; +import com.android.tools.r8.keepanno.annotations.KeepTarget; +import com.android.tools.r8.keepanno.annotations.UsesReflection; + import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collections; @@ -41,7 +45,13 @@ public class RankingHelper { private final Context mContext; private final RankingHandler mRankingHandler; - + @UsesReflection( + value = { + @KeepTarget( + kind = KeepItemKind.CLASS_AND_MEMBERS, + instanceOfClassConstantExclusive = NotificationSignalExtractor.class, + methodName = "<init>") + }) public RankingHelper(Context context, RankingHandler rankingHandler, RankingConfig config, ZenModeHelper zenHelper, NotificationUsageStats usageStats, String[] extractorNames) { mContext = context; diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index 45ea2db3fde8..2f2512d6edca 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -131,6 +131,9 @@ import com.android.server.utils.TimingsTraceAndSlog; import com.android.server.wallpaper.WallpaperData.BindSource; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; +import com.android.tools.r8.keepanno.annotations.KeepItemKind; +import com.android.tools.r8.keepanno.annotations.KeepTarget; +import com.android.tools.r8.keepanno.annotations.UsesReflection; import org.xmlpull.v1.XmlPullParserException; @@ -166,6 +169,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } @Override + @UsesReflection( + value = { + @KeepTarget( + kind = KeepItemKind.CLASS_AND_MEMBERS, + instanceOfClassConstantExclusive = IWallpaperManagerService.class, + methodName = "<init>") + }) public void onStart() { try { final Class<? extends IWallpaperManagerService> klass = diff --git a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java index c18377d76cb7..3a4d02f17efb 100644 --- a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java @@ -40,6 +40,10 @@ import android.content.res.Resources; import android.os.Bundle; import android.text.TextUtils; +import com.android.tools.r8.keepanno.annotations.KeepItemKind; +import com.android.tools.r8.keepanno.annotations.KeepTarget; +import com.android.tools.r8.keepanno.annotations.UsesReflection; + import java.util.ArrayList; import java.util.List; @@ -179,6 +183,13 @@ public abstract class DisplayAreaPolicy { /** * Instantiates the device-specific {@link Provider}. */ + @UsesReflection( + value = { + @KeepTarget( + kind = KeepItemKind.CLASS_AND_MEMBERS, + instanceOfClassConstantExclusive = Provider.class, + methodName = "<init>") + }) static Provider fromResources(Resources res) { String name = res.getString( com.android.internal.R.string.config_deviceSpecificDisplayAreaPolicyProvider); diff --git a/services/proguard.flags b/services/proguard.flags index a01e7dc16147..f84eff79bb15 100644 --- a/services/proguard.flags +++ b/services/proguard.flags @@ -33,12 +33,6 @@ -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>(...); -} # Accessed from com.android.compos APEX -keep,allowoptimization,allowaccessmodification class com.android.internal.art.ArtStatsLog { @@ -68,13 +62,6 @@ -keep public class android.hidl.manager.** { *; } -keep public class com.android.server.wm.WindowManagerInternal { *; } -# 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 - -# OEM provided DisplayAreaPolicy.Provider defined in frameworks/base/core/res/res/values/config.xml. --keep,allowoptimization,allowaccessmodification class com.android.server.wm.** implements com.android.server.wm.DisplayAreaPolicy$Provider - # JNI keep rules # The global keep rule for native methods allows stripping of such methods if they're unreferenced # in Java. However, because system_server explicitly registers these methods from native code, @@ -118,9 +105,6 @@ # 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 |