Add keep rules for SysUI plugin annotations

These rules are necessary to ensure correct runtime plugin annotation
preservation for downstream targets built with R8 full mode. This was
previously addressed in downstream target keep rules, but with
aosp/2363992, such targets will now inherit the keep rules bundled with
the plugin library.

Bug: 215530220
Test: m + inspect downstream proguard_configuration output
Change-Id: I3793947827902617eaa5af681e99c889869cdca6
This commit is contained in:
Jared Duke
2023-06-07 22:15:19 +00:00
parent 933a0c09f8
commit e0bfada528
2 changed files with 14 additions and 0 deletions

View File

@@ -25,6 +25,9 @@ java_library {
sdk_version: "current",
name: "PluginCoreLib",
srcs: ["src/**/*.java"],
optimize: {
proguard_flags_files: ["proguard.flags"],
},
// Enforce that the library is built against java 8 so that there are
// no compatibility issues with launcher

View File

@@ -0,0 +1,11 @@
# R8's full mode is a bit more aggressive in stripping annotations, but the
# SystemUI plugin architecture requires these annotations at runtime. The
# following rules are the minimal set necessary to ensure compatibility.
# For more details, see:
# https://r8.googlesource.com/r8/+/refs/heads/master/compatibility-faq.md#r8-full-mode
-keepattributes RuntimeVisible*Annotation*,AnnotationDefault
-keep interface com.android.systemui.plugins.annotations.** {
*;
}
-keep,allowshrinking,allowoptimization,allowobfuscation,allowaccessmodification @com.android.systemui.plugins.annotations.** class *