diff options
author | Tamas Kenez <tamaskenez@google.com> | 2017-10-24 10:55:14 +0000 |
---|---|---|
committer | Tamas Kenez <tamaskenez@google.com> | 2017-10-24 10:55:14 +0000 |
commit | 4665e1e97e01c58b368a2c85e0f3a000fe1ec8ec (patch) | |
tree | f54d0ce2f8b90997b2d43b60816fde9a5deaa971 | |
parent | ad41f3f7a62832034b9bc90aef4ee23e31ce03c0 (diff) | |
download | r8-4665e1e97e01c58b368a2c85e0f3a000fe1ec8ec.tar.gz |
Revert "Automatically (not explicitly) control Proguard-related default options"
This reverts commit ad41f3f7a62832034b9bc90aef4ee23e31ce03c0.
Reason for revert: bot failures
Change-Id: I6b5dec164f495d5ae47312564608b4eda93fad98
5 files changed, 55 insertions, 20 deletions
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java index 3cecbe2fe..7eff6faf9 100644 --- a/src/main/java/com/android/tools/r8/R8Command.java +++ b/src/main/java/com/android/tools/r8/R8Command.java @@ -214,7 +214,7 @@ public class R8Command extends BaseCompilerCommand { ProguardConfiguration.Builder configurationBuilder; if (proguardConfigs.isEmpty()) { - configurationBuilder = ProguardConfiguration.builder(factory); + configurationBuilder = ProguardConfiguration.builderInitializedWithDefaults(factory); } else { ProguardConfigurationParser parser = new ProguardConfigurationParser(factory, getDiagnosticsHandler()); 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 5fa3d7272..dc800a3ee 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java @@ -19,13 +19,13 @@ public class ProguardConfiguration { private final List<FilteredClassPath> injars = new ArrayList<>(); private final List<FilteredClassPath> libraryjars = new ArrayList<>(); - private PackageObfuscationMode packageObfuscationMode = PackageObfuscationMode.NONE; - private String packagePrefix = ""; + private PackageObfuscationMode packageObfuscationMode; + private String packagePrefix; private boolean allowAccessModification; private boolean ignoreWarnings; - private boolean optimizing = true; - private boolean obfuscating = true; - private boolean shrinking = true; + private boolean optimizing; + private boolean obfuscating; + private boolean shrinking; private boolean printUsage; private Path printUsageFile; private boolean printMapping; @@ -34,7 +34,7 @@ public class ProguardConfiguration { private boolean verbose; private String renameSourceFileAttribute; private final List<String> keepAttributePatterns = new ArrayList<>(); - private ProguardClassNameList dontWarnPatterns = ProguardClassNameList.emptyList(); + private ProguardClassNameList dontWarnPatterns; protected final List<ProguardConfigurationRule> rules = new ArrayList<>(); private final DexItemFactory dexItemFactory; private boolean printSeeds; @@ -48,6 +48,36 @@ public class ProguardConfiguration { private Builder(DexItemFactory dexItemFactory) { this.dexItemFactory = dexItemFactory; + resetProguardDefaults(); + } + + public void resetProguardDefaults() { + injars.clear(); + libraryjars.clear(); + packageObfuscationMode = PackageObfuscationMode.NONE; + packagePrefix = ""; + allowAccessModification = false; + ignoreWarnings = false; + optimizing = true; + obfuscating = true; + shrinking = true; + printUsage = false; + printUsageFile = null; + printMapping = false; + printMappingFile = null; + applyMappingFile = null; + verbose = false; + renameSourceFileAttribute = null; + keepAttributePatterns.clear(); + dontWarnPatterns = ProguardClassNameList.emptyList(); + rules.clear(); + printSeeds = false; + seedFile = null; + obfuscationDictionary = null; + classObfuscationDictionary = null; + packageObfuscationDictionary = null; + useUniqueClassMemberNames = false; + keepParameterNames = false; } public void addInjars(List<FilteredClassPath> injars) { @@ -177,14 +207,6 @@ public class ProguardConfiguration { } public ProguardConfiguration build() throws CompilationException { - if (rules.isEmpty()) { - setObfuscating(false); - setShrinking(false); - addRule(ProguardKeepRule.defaultKeepAllRule()); - if (keepAttributePatterns.isEmpty()) { - addKeepAttributePatterns(KeepAttributeOptions.KEEP_ALL); - } - } return new ProguardConfiguration( dexItemFactory, injars, @@ -312,6 +334,15 @@ public class ProguardConfiguration { return new Builder(dexItemFactory); } + public static Builder builderInitializedWithDefaults(DexItemFactory dexItemFactory) { + Builder builder = new Builder(dexItemFactory); + builder.setObfuscating(false); + builder.setShrinking(false); + builder.addKeepAttributePatterns(KeepAttributeOptions.KEEP_ALL); + builder.addRule(ProguardKeepRule.defaultKeepAllRule()); + return builder; + } + public DexItemFactory getDexItemFactory() { return dexItemFactory; } @@ -422,7 +453,7 @@ public class ProguardConfiguration { public static ProguardConfiguration defaultConfiguration(DexItemFactory dexItemFactory) { try { - return builder(dexItemFactory).build(); + return builderInitializedWithDefaults(dexItemFactory).build(); } catch(CompilationException e) { // Building a builder initialized with defaults will not throw CompilationException because // DictionaryReader is called with empty lists. diff --git a/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java b/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java index 6306f91b9..c4af25c06 100644 --- a/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java +++ b/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java @@ -91,9 +91,11 @@ public class JSR45Tests { checkAnnotationContent(INPUT_PATH, result); } - /** Check that when dontshrink and dontobfuscate is used the annotation is transmitted. */ + /** + * Check that when dontshrink and dontobfuscate is used the annotation is transmitted. + */ @Test - public void testSourceDebugExtensionWithShrinking1() + public void testSourceDebugExtensionWithShriking1() throws IOException, CompilationException, ExecutionException { Path outputPath = tmpOutputDir.newFolder().toPath(); AndroidApp result = compileWithR8(INPUT_PATH, outputPath, DONT_SHRINK_DONT_OBFUSCATE_CONFIG); @@ -123,7 +125,7 @@ public class JSR45Tests { } /** - * Check that the annotation is removed when shrinking is enabled and that there is not + * Check that the annotation is removed when shriking is enabled and that there is not * keepattributes option. */ @Test diff --git a/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java b/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java index 029e083be..427c25321 100644 --- a/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java +++ b/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java @@ -21,6 +21,8 @@ public class RenameSourceFileDebugTest extends DebugTestBase { setUp( null, pg -> { + pg.resetProguardDefaults(); + pg.addRule(ProguardKeepRule.defaultKeepAllRule()); pg.setRenameSourceFileAttribute(TEST_FILE); pg.addKeepAttributePatterns(ImmutableList.of("SourceFile", "LineNumberTable")); }); diff --git a/src/test/java/com/android/tools/r8/utils/R8CommandTest.java b/src/test/java/com/android/tools/r8/utils/R8CommandTest.java index 6dda185a8..2054b22a7 100644 --- a/src/test/java/com/android/tools/r8/utils/R8CommandTest.java +++ b/src/test/java/com/android/tools/r8/utils/R8CommandTest.java @@ -229,7 +229,7 @@ public class R8CommandTest { R8Command command = parse("@" + argsFile.toString()); assertEquals(CompilationMode.DEBUG, command.getMode()); assertFalse(command.useMinification()); - assertFalse(command.useTreeShaking()); // We have no keep rules (proguard config file is empty). + assertTrue(command.useTreeShaking()); assertEquals(1, ToolHelper.getApp(command).getDexProgramResources().size()); } |