aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamas Kenez <tamaskenez@google.com>2017-10-24 10:55:14 +0000
committerTamas Kenez <tamaskenez@google.com>2017-10-24 10:55:14 +0000
commit4665e1e97e01c58b368a2c85e0f3a000fe1ec8ec (patch)
treef54d0ce2f8b90997b2d43b60816fde9a5deaa971
parentad41f3f7a62832034b9bc90aef4ee23e31ce03c0 (diff)
downloadr8-4665e1e97e01c58b368a2c85e0f3a000fe1ec8ec.tar.gz
Revert "Automatically (not explicitly) control Proguard-related default options"
This reverts commit ad41f3f7a62832034b9bc90aef4ee23e31ce03c0. Reason for revert: bot failures Change-Id: I6b5dec164f495d5ae47312564608b4eda93fad98
-rw-r--r--src/main/java/com/android/tools/r8/R8Command.java2
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java61
-rw-r--r--src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java8
-rw-r--r--src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java2
-rw-r--r--src/test/java/com/android/tools/r8/utils/R8CommandTest.java2
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());
}