commit | ea1bd5eda69a52a8b20423b203bd33571ae5fc10 | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Fri May 25 13:03:45 2018 -0700 |
committer | Colin Cross <ccross@android.com> | Fri May 25 13:07:38 2018 -0700 |
tree | 2dd622b63b8c098736c0a8fd5b65499d18e947f8 | |
parent | 691e4d0567326dbdc92910000bad36a28b8882e6 [diff] |
Treat -dontobfuscate as -keepattributes * in Proguard compatibilty mode Proguard always keeps all attributes with -dontobfuscate. R8 in Proguard compatibility mode was only keeping all attributes if no -keepattributes flag was specified. Make R8 keep all attributes with -dontobfuscate. Bug: 80081393 Change-Id: I692187bea9f3920387081768cdb2b52b6fed1f1d
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java index dd82dfd..d4d4bcb 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
@@ -305,8 +305,8 @@ // disableOptimization(); } - if ((keepAttributePatterns.isEmpty() - && (rulesWasEmpty || (forceProguardCompatibility && !isObfuscating()))) + if ((keepAttributePatterns.isEmpty() && rulesWasEmpty) + || (forceProguardCompatibility && !isObfuscating()) || !isShrinking()) { keepAttributePatterns.addAll(ProguardKeepAttributes.KEEP_ALL); }
diff --git a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java index 91fc9d4..642045c 100644 --- a/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java +++ b/src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java
@@ -110,7 +110,7 @@ // The test contains only a member class so the enclosing-method attribute will be null. assertEquals( - !keepAnnotations && forceProguardCompatibility, + forceProguardCompatibility, !clazz.getDexClass().getInnerClasses().isEmpty()); assertEquals(forceProguardCompatibility || keepAnnotations, clazz.annotation(annotationClass.getCanonicalName()).isPresent());