Version 1.5.36 Cherry-pick: Disable minification if -addconfigurationdebugging is set. CL: https://r8-review.googlesource.com/c/r8/+/38601 Cherry-pick: Fix compilation warning from LocalClassRenamingTest CL: https://r8-review.googlesource.com/c/r8/+/38584 Bug: 133167042, 73707846 Change-Id: I6bb1cc8ed1fe68554f2613e54642707b3388d0bc
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java index ae8d4ae..5c0e9f7 100644 --- a/src/main/java/com/android/tools/r8/R8.java +++ b/src/main/java/com/android/tools/r8/R8.java
@@ -660,13 +660,7 @@ // Perform minification. NamingLens namingLens; - if (options.configurationDebugging) { - if (options.getProguardConfiguration().hasApplyMappingFile() || options.isMinifying()) { - options.reporter.info(new StringDiagnostic( - "Build is not being obfuscated due to the use of -addconfigurationdebugging")); - } - namingLens = NamingLens.getIdentityLens(); - } else if (options.getProguardConfiguration().hasApplyMappingFile()) { + if (options.getProguardConfiguration().hasApplyMappingFile()) { SeedMapper seedMapper = SeedMapper.seedMapperFromFile( options.reporter, options.getProguardConfiguration().getApplyMappingFile()); @@ -680,6 +674,7 @@ namingLens = new Minifier(appView.withLiveness(), desugaredCallSites).run(timing); timing.end(); } else { + // Rewrite signature annotations for applications that are not minified. if (appView.appInfo().hasLiveness()) { // TODO(b/124726014): Rewrite signature annotations in lens rewriting instead of here? new GenericSignatureRewriter(appView.withLiveness()).run(appView.appInfo().classes());
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java index 375cc0b..6fce43b 100644 --- a/src/main/java/com/android/tools/r8/Version.java +++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@ // This field is accessed from release scripts using simple pattern matching. // Therefore, changing this field could break our release scripts. - public static final String LABEL = "1.5.35"; + public static final String LABEL = "1.5.36"; private Version() { }
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 9d0adec..bfad990 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
@@ -167,6 +167,10 @@ this.applyMappingFile = file; } + public boolean hasApplyMappingFile() { + return applyMappingFile != null; + } + public void setVerbose(boolean verbose) { this.verbose = verbose; } @@ -276,6 +280,10 @@ this.configurationDebugging = configurationDebugging; } + boolean isConfigurationDebugging() { + return configurationDebugging; + } + public void setDontUseMixedCaseClassnames(boolean dontUseMixedCaseClassnames) { this.dontUseMixedCaseClassnames = dontUseMixedCaseClassnames; }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java index a3d58a1..bc3b2ff 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -128,6 +128,20 @@ configurationBuilder.getKeepParameterNamesOptionOrigin(), configurationBuilder.getKeepParameterNamesOptionPosition())); } + if (configurationBuilder.isConfigurationDebugging()) { + String suffix = "due to the use of -addconfigurationdebugging"; + if (configurationBuilder.isObfuscating()) { + reporter.info( + new StringDiagnostic("Build is not being obfuscated " + suffix)); + configurationBuilder.disableObfuscation(); + } + if (configurationBuilder.hasApplyMappingFile()) { + reporter.info( + new StringDiagnostic( + "Applying the obfuscation map (-applymapping) is disabled " + suffix)); + configurationBuilder.setApplyMappingFile(null); + } + } } /**
diff --git a/src/test/java/com/android/tools/r8/naming/b132460884/LocalClassRenamingTest.java b/src/test/java/com/android/tools/r8/naming/b132460884/LocalClassRenamingTest.java index 4d82789..eb17213 100644 --- a/src/test/java/com/android/tools/r8/naming/b132460884/LocalClassRenamingTest.java +++ b/src/test/java/com/android/tools/r8/naming/b132460884/LocalClassRenamingTest.java
@@ -29,7 +29,7 @@ this.map = new HashMap<>(); } - public static <K, V> TestMap of(K k, V v) { + public static <K, V> TestMap<K, V> of(K k, V v) { TestMap<K, V> m = new TestMap<>(); m.map.put(k, v); return m;
diff --git a/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java b/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java new file mode 100644 index 0000000..725fe66 --- /dev/null +++ b/src/test/java/com/android/tools/r8/shaking/addconfigurationdebugging/B133167042.java
@@ -0,0 +1,53 @@ +// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. +package com.android.tools.r8.shaking.addconfigurationdebugging; + +import com.android.tools.r8.TestBase; +import com.android.tools.r8.TestParameters; +import com.android.tools.r8.TestParametersCollection; +import com.android.tools.r8.utils.StringUtils; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; + +@RunWith(Parameterized.class) +public class B133167042 extends TestBase { + + static class TestClass { + public static void main(String... args) { + boolean onAndroid = false; + try { + // Intentional typo not to set `onAndroid`. + Class.forName("android.os.Bui1d"); + onAndroid = true; + } catch (ClassNotFoundException e) { + // Intentionally empty + } + System.out.println(onAndroid); + } + } + + @Parameters(name = "{0}") + public static TestParametersCollection data() { + return getTestParameters().withAllRuntimes().build(); + } + + private final TestParameters parameters; + + public B133167042(TestParameters parameters) { + this.parameters = parameters; + } + + @Test + public void test() throws Exception { + testForR8(parameters.getBackend()) + .addProgramClasses(TestClass.class) + .addKeepMainRule(TestClass.class) + .addKeepRules("-addconfigurationdebugging") + .setMinApi(parameters.getRuntime()) + .run(parameters.getRuntime(), TestClass.class) + .assertSuccessWithOutput(StringUtils.lines("false")); + } +}