summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jared Duke <jdduke@google.com> 2022-05-09 18:09:01 -0700
committer Jared Duke <jdduke@google.com> 2022-05-11 09:47:12 -0700
commit7d0c90b51fb21b2815f244958b4b26c320335f51 (patch)
treead6102299018df83d2907dd8a71201fae3e45ba4
parent516162764478bc530b58d2d5be27740c9c40b811 (diff)
Add keep rules for @KeepForWeakReference annotation
Ensure annotated fields are kept when treeshaking-related optimizations are enabled. Note that this still allows field removal if tree shaking reveals no references, but will avoid removal if there are references that might impact downstream usage, e.g., weak references. Bug: 227455445 Test: atest InternalAnnotationsTest Change-Id: I59c6277c43b14c5de8154fa1eefad01f0702e413
-rw-r--r--core/proguard.flags6
1 files changed, 6 insertions, 0 deletions
diff --git a/core/proguard.flags b/core/proguard.flags
index 185275e858..aee5271744 100644
--- a/core/proguard.flags
+++ b/core/proguard.flags
@@ -15,6 +15,12 @@
@**.VisibleForTesting *;
}
+# Keep rule for members that are needed solely to keep alive downstream weak
+# references, and could otherwise be removed after tree shaking optimizations.
+-keepclassmembers,allowaccessmodification,allowobfuscation,allowshrinking class * {
+ @com.android.internal.annotations.KeepForWeakReference <fields>;
+}
+
# Understand the common @Keep annotation from various Android packages:
# * android.support.annotation
# * androidx.annotation