From c10ba0571e1ba4d6bc9c9341a95b3fabe67a4d03 Mon Sep 17 00:00:00 2001 From: Googler Date: Thu, 7 Dec 2017 12:57:03 -0800 Subject: Temporary fix for resource filtering with aapt2 Currently, aapt2 always gets all resources, even the filtered ones. As such, always do density filtering, even if input to aapt2 says we don't have to. We don't need to worry about not passing resource configuration filtering information - it's already passed to aapt and aapt2 (since aapt is stricter than the resource filtering in android_ide_common that is used to filter in analysis, and also needs resource configuration filters to generate pseudolocalized resources). RELNOTES: none PiperOrigin-RevId: 178282329 --- .../android/Aapt2ResourcePackagingAction.java | 25 +++++++++++----------- 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java') 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 a6902c0e67..c2ddb7cd9f 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 @@ -33,7 +33,6 @@ import java.io.Closeable; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Collections; import java.util.List; /** @@ -88,13 +87,15 @@ public class Aapt2ResourcePackagingAction { final Path compiledResources = Files.createDirectories(tmp.resolve("compiled")); final Path linkedOut = Files.createDirectories(tmp.resolve("linked")); - final List densitiesToFilter = - options.prefilteredResources.isEmpty() - ? options.densities - : Collections.emptyList(); - - final List densitiesForManifest = - densitiesToFilter.isEmpty() ? options.densitiesForManifest : densitiesToFilter; + final List densities; + if (options.densities.isEmpty()) { + // aapt2 always needs to filter on densities, as the resource filtering from analysis is + // disregarded. + // TODO(b/70335064): Remove this once we never filter in analysis when building for aapt2. + densities = options.densitiesForManifest; + } else { + densities = options.densities; + } profiler.recordEndOf("setup").startTask("merging"); @@ -120,8 +121,8 @@ public class Aapt2ResourcePackagingAction { options.throwOnResourceConflict) .filter( new DensitySpecificResourceFilter( - densitiesToFilter, filteredResources, mergedResources), - new DensitySpecificManifestProcessor(densitiesForManifest, densityManifest)); + densities, filteredResources, mergedResources), + new DensitySpecificManifestProcessor(densities, densityManifest)); profiler.recordEndOf("merging"); @@ -152,7 +153,7 @@ public class Aapt2ResourcePackagingAction { processedManifest)) .processManifest( manifest -> - new DensitySpecificManifestProcessor(densitiesForManifest, densityManifest) + new DensitySpecificManifestProcessor(densities, densityManifest) .process(manifest)); profiler.recordEndOf("compile").startTask("link"); // Write manifestOutput now before the dummy manifest is created. @@ -181,7 +182,7 @@ public class Aapt2ResourcePackagingAction { .withAssets(assetDirs) .buildVersion(aaptConfigOptions.buildToolsVersion) .conditionalKeepRules(aaptConfigOptions.conditionalKeepRules == TriState.YES) - .filterToDensity(densitiesToFilter) + .filterToDensity(densities) .includeOnlyConfigs(aaptConfigOptions.resourceConfigs) .link(compiled) .copyPackageTo(options.packagePath) -- cgit v1.2.3