diff options
author | corysmith <corysmith@google.com> | 2017-11-08 20:10:36 +0100 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2017-11-09 18:29:04 +0100 |
commit | 743ea216879dd0e3037d4b34eff92ba8af493554 (patch) | |
tree | a56fe6988297bc022a328c911b60b2f0249e0df6 /src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java | |
parent | f5a109157ed048ff253bb2ba70f3e4372ec125ba (diff) |
Fix resource shrinking to filter densities and include assets.
RELNOTES: None
PiperOrigin-RevId: 175033155
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java index 0a71f82119..c8946b412d 100644 --- a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java +++ b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java @@ -83,6 +83,7 @@ public class Aapt2ResourcePackagingAction { final Path tmp = scopedTmp.getPath(); final Path mergedAssets = tmp.resolve("merged_assets"); final Path mergedResources = tmp.resolve("merged_resources"); + final Path filteredResources = tmp.resolve("filtered_resources"); final Path densityManifest = tmp.resolve("manifest-filtered/AndroidManifest.xml"); @@ -92,28 +93,37 @@ public class Aapt2ResourcePackagingAction { final Path compiledResources = Files.createDirectories(tmp.resolve("compiled")); final Path linkedOut = Files.createDirectories(tmp.resolve("linked")); + final List<String> densitiesToFilter = + options.prefilteredResources.isEmpty() + ? options.densities + : Collections.<String>emptyList(); + + final List<String> densitiesForManifest = + densitiesToFilter.isEmpty() ? options.densitiesForManifest : densitiesToFilter; + profiler.recordEndOf("setup").startTask("merging"); // Checks for merge conflicts. MergedAndroidData mergedAndroidData = AndroidResourceMerger.mergeData( - options.primaryData, - options.directData, - options.transitiveData, - mergedResources, - mergedAssets, - null /* cruncher. Aapt2 automatically chooses to crunch or not. */, - options.packageType, - options.symbolsOut, - options.prefilteredResources, - false /* throwOnResourceConflict */); + options.primaryData, + options.directData, + options.transitiveData, + mergedResources, + mergedAssets, + null /* cruncher. Aapt2 automatically chooses to crunch or not. */, + options.packageType, + options.symbolsOut, + options.prefilteredResources, + false /* throwOnResourceConflict */) + .filter( + new DensitySpecificResourceFilter( + densitiesToFilter, filteredResources, mergedResources), + new DensitySpecificManifestProcessor(densitiesForManifest, densityManifest)); profiler.recordEndOf("merging"); - final List<String> densitiesToFilter = - options.prefilteredResources.isEmpty() - ? options.densities - : Collections.<String>emptyList(); + final ListeningExecutorService executorService = ExecutorServiceCloser.createDefaultService(); try (final Closeable closeable = ExecutorServiceCloser.createWith(executorService)) { profiler.startTask("compile"); @@ -127,8 +137,8 @@ public class Aapt2ResourcePackagingAction { CompiledResources compiled = options .primaryData - .processDataBindings(options.dataBindingInfoOut, options.packageForR, - databindingResourcesRoot) + .processDataBindings( + options.dataBindingInfoOut, options.packageForR, databindingResourcesRoot) .compile(compiler, compiledResources) .processManifest( manifest -> @@ -141,7 +151,7 @@ public class Aapt2ResourcePackagingAction { processedManifest)) .processManifest( manifest -> - new DensitySpecificManifestProcessor(options.densities, densityManifest) + new DensitySpecificManifestProcessor(densitiesForManifest, densityManifest) .process(manifest)); profiler.recordEndOf("compile").startTask("link"); // Write manifestOutput now before the dummy manifest is created. |