Add --android-resources-usage-log support to compiledump.py Change-Id: I9e43d6f1d7c7f053fcf8fa0d4e4cab888379cac1
diff --git a/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java b/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java index 86e2e39..a2c973e 100644 --- a/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java +++ b/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java
@@ -7,10 +7,12 @@ import com.android.tools.r8.CompilationFailedException; import com.android.tools.r8.CompilationMode; import com.android.tools.r8.DexIndexedConsumer.ArchiveConsumer; +import com.android.tools.r8.DiagnosticsHandler; import com.android.tools.r8.FeatureSplit; import com.android.tools.r8.OutputMode; import com.android.tools.r8.R8; import com.android.tools.r8.R8Command; +import com.android.tools.r8.StringConsumer; import com.android.tools.r8.utils.compiledump.CompilerCommandDumpUtils; import com.android.tools.r8.utils.compiledump.R8PartialDumpUtils; import com.android.tools.r8.utils.compiledump.ResourceShrinkerDumpUtils; @@ -69,7 +71,8 @@ "--partial-include", "--partial-exclude", "--threads", - "--startup-profile"); + "--startup-profile", + "--android-resources-usage-log"); private static final List<String> VALID_OPTIONS_WITH_TWO_OPERANDS = Arrays.asList("--art-profile", "--feature-jar", "--android-resources"); @@ -121,6 +124,7 @@ List<Path> startupProfileFiles = new ArrayList<>(); Path androidResourcesInput = null; Path androidResourcesOutput = null; + StringConsumer androidResourcesUsageLogConsumer = null; int minApi = 1; int threads = -1; BooleanBox enableMissingLibraryApiModeling = new BooleanBox(false); @@ -229,6 +233,22 @@ startupProfileFiles.add(Paths.get(operand)); break; } + case "--android-resources-usage-log": + { + if (operand.equals("-") || operand.equals("stdout")) { + androidResourcesUsageLogConsumer = + new StringConsumer() { + @Override + public void accept(String string, DiagnosticsHandler handler) { + System.out.print(string); + } + }; + } else { + androidResourcesUsageLogConsumer = + new StringConsumer.FileConsumer(Paths.get(operand)); + } + break; + } default: throw new IllegalArgumentException("Unimplemented option: " + option); } @@ -321,6 +341,15 @@ ResourceShrinkerDumpUtils.setOptimziedResourceShrinking( optimizedResourceShrinking.get(), commandBuilder), "Failed setting optimized resource shrinking flag."); + if (optimizedResourceShrinking.get() && androidResourcesUsageLogConsumer != null) { + StringConsumer finalConsumer = androidResourcesUsageLogConsumer; + runIgnoreMissing( + () -> + commandBuilder.setResourceShrinkerConfiguration( + b -> + b.enableOptimizedShrinkingWithR8().setDebugConsumer(finalConsumer).build()), + "Failed setting optimized resource shrinking log consumer."); + } } if (outputMode != OutputMode.ClassFile) { commandBuilder.setMinApiLevel(minApi);
diff --git a/tools/compiledump.py b/tools/compiledump.py index 3e661ba..4de0444 100755 --- a/tools/compiledump.py +++ b/tools/compiledump.py
@@ -161,6 +161,12 @@ help='Use optimized resource shrinking', default=False, action='store_true') + parser.add_argument( + '--android-resources-usage-log', + '--android_resources_usage_log', + help= + 'File to write resources usage log to (or "-" / "stdout" for stdout)', + default=None) parser.add_argument('--compilation-mode', '--compilation_mode', help='Run compilation in specified mode', @@ -797,6 +803,11 @@ raise Exception("Proguard map input only supported for D8 dump") if is_r8_compiler(compiler) and optimized_resource_shrinking: cmd.extend(['--optimized-resource-shrinking']) + if is_r8_compiler(compiler) and args.android_resources_usage_log: + cmd.extend([ + '--android-resources-usage-log', + args.android_resources_usage_log + ]) if enable_missing_library_api_modeling: cmd.extend(['--enable-missing-library-api-modeling']) if args.threads: