commit | c679875ed7010b2dcb1449e0aa11f134cafb331a | [log] [tgz] |
---|---|---|
author | Morten Krogh-Jespersen <mkroghj@google.com> | Mon Oct 19 08:17:45 2020 +0200 |
committer | Morten Krogh-Jespersen <mkroghj@google.com> | Mon Oct 19 08:17:45 2020 +0200 |
tree | 369ff9317cc77893f192c49994d42c9caeb1c0c4 | |
parent | ef38c90d635e083b2f6966cc04bb27805ca70a18 [diff] |
Add allowSignatureAttributeRemoval to keep info Bug: 170077516 Change-Id: Id141c5945a1a2785d4fdf4204e068b5742e4d6e5
diff --git a/src/main/java/com/android/tools/r8/shaking/GlobalKeepInfoConfiguration.java b/src/main/java/com/android/tools/r8/shaking/GlobalKeepInfoConfiguration.java index 624ee95..765fe31 100644 --- a/src/main/java/com/android/tools/r8/shaking/GlobalKeepInfoConfiguration.java +++ b/src/main/java/com/android/tools/r8/shaking/GlobalKeepInfoConfiguration.java
@@ -13,4 +13,8 @@ boolean isAccessModificationEnabled(); boolean isRepackagingEnabled(); + + boolean isForceProguardCompatibilityEnabled(); + + boolean isKeepAttributesSignatureEnabled(); }
diff --git a/src/main/java/com/android/tools/r8/shaking/KeepInfo.java b/src/main/java/com/android/tools/r8/shaking/KeepInfo.java index 4cb677f..7d75f05 100644 --- a/src/main/java/com/android/tools/r8/shaking/KeepInfo.java +++ b/src/main/java/com/android/tools/r8/shaking/KeepInfo.java
@@ -82,6 +82,12 @@ return allowAccessModification; } + public boolean isAllowSignatureAttributeRemovalAllowed( + GlobalKeepInfoConfiguration configuration) { + return !configuration.isKeepAttributesSignatureEnabled() + || !(isPinned() || configuration.isForceProguardCompatibilityEnabled()); + } + public abstract boolean isTop(); public abstract boolean isBottom();
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java index ae54b24..c1fe00e 100644 --- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java +++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -550,6 +550,16 @@ && (isShrinking() || isMinifying()); } + @Override + public boolean isForceProguardCompatibilityEnabled() { + return forceProguardCompatibility; + } + + @Override + public boolean isKeepAttributesSignatureEnabled() { + return proguardConfiguration.getKeepAttributes().signature; + } + /** * If any non-static class merging is enabled, information about types referred to by instanceOf * and check cast instructions needs to be collected.