summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jared Duke <jdduke@google.com> 2023-07-19 22:11:11 +0000
committer Jared Duke <jdduke@google.com> 2023-08-30 15:50:53 +0000
commit74d09ea6ff951ada8bb0544bcca065167fa3e352 (patch)
tree9f87164ab49c430577868ab69e387d2cad058277
parent22f1191130fe6917f963eb0ce7756967f034bb05 (diff)
Use @UsesReflection for LocalTransport keep rules
Prefer the @UsesReflection annotation to generate the keep rules necessary to preserve LocalTransport derived class names. These class names should be kept as they are used to generate a name that may be referenced by other packages. Other classes currently in the proguard config are automatically kept by manifest-generated keep rules, or are otherwise unnecessary. This change is effectively a no-op under the current shrinking configuration for both LocalTransport and EncryptedLocalTransport. If obfuscation is enabled, this annotation will ensure continued correctness. Bug: 248580093 Test: m + ensure all classes kept Change-Id: I867693861e5b1ca9765c926d676c0b18b16cc340
-rw-r--r--packages/EncryptedLocalTransport/Android.bp3
-rw-r--r--packages/EncryptedLocalTransport/proguard.flags2
-rw-r--r--packages/LocalTransport/Android.bp4
-rw-r--r--packages/LocalTransport/proguard.flags5
-rw-r--r--packages/LocalTransport/src/com/android/localtransport/LocalTransport.java10
5 files changed, 11 insertions, 13 deletions
diff --git a/packages/EncryptedLocalTransport/Android.bp b/packages/EncryptedLocalTransport/Android.bp
index 09e563076c95..9ae6d9648979 100644
--- a/packages/EncryptedLocalTransport/Android.bp
+++ b/packages/EncryptedLocalTransport/Android.bp
@@ -27,9 +27,6 @@ android_app {
name: "EncryptedLocalTransport",
defaults: ["platform_app_defaults"],
srcs: ["src/**/*.java"],
- optimize: {
- proguard_flags_files: ["proguard.flags"],
- },
static_libs: ["LocalTransport"],
platform_apis: true,
certificate: "platform",
diff --git a/packages/EncryptedLocalTransport/proguard.flags b/packages/EncryptedLocalTransport/proguard.flags
deleted file mode 100644
index e4ce3c524e35..000000000000
--- a/packages/EncryptedLocalTransport/proguard.flags
+++ /dev/null
@@ -1,2 +0,0 @@
--keep class com.android.localTransport.EncryptedLocalTransport
--keep class com.android.localTransport.EncryptedLocalTransportService
diff --git a/packages/LocalTransport/Android.bp b/packages/LocalTransport/Android.bp
index d4fa1915a140..e7a273b83a7d 100644
--- a/packages/LocalTransport/Android.bp
+++ b/packages/LocalTransport/Android.bp
@@ -27,9 +27,7 @@ android_app {
name: "LocalTransport",
defaults: ["platform_app_defaults"],
srcs: ["src/**/*.java"],
- optimize: {
- proguard_flags_files: ["proguard.flags"],
- },
+ libs: ["keepanno-annotations"],
platform_apis: true,
certificate: "platform",
privileged: true,
diff --git a/packages/LocalTransport/proguard.flags b/packages/LocalTransport/proguard.flags
deleted file mode 100644
index c1f51b892d40..000000000000
--- a/packages/LocalTransport/proguard.flags
+++ /dev/null
@@ -1,5 +0,0 @@
--keep class com.android.localTransport.LocalTransport
--keep class com.android.localTransport.LocalTransportParameters
--keep class com.android.localTransport.LocalTransportService
-
-
diff --git a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java
index 4344e9401fc9..6540cc060bc2 100644
--- a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java
+++ b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java
@@ -35,6 +35,9 @@ import android.util.ArrayMap;
import android.util.Base64;
import android.util.Log;
+import com.android.tools.r8.keepanno.annotations.KeepTarget;
+import com.android.tools.r8.keepanno.annotations.UsesReflection;
+
import libcore.io.IoUtils;
import java.io.BufferedOutputStream;
@@ -122,6 +125,13 @@ public class LocalTransport extends BackupTransport {
return mParameters;
}
+
+ @UsesReflection({
+ // As the runtime class name is used to generate the returned name, and the returned
+ // name may be used used with reflection, generate the necessary keep rules.
+ @KeepTarget(classConstant = LocalTransport.class),
+ @KeepTarget(extendsClassConstant = LocalTransport.class)
+ })
@Override
public String name() {
return new ComponentName(mContext, this.getClass()).flattenToShortString();