aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2017-11-08 20:10:36 +0100
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-11-09 18:29:04 +0100
commit743ea216879dd0e3037d4b34eff92ba8af493554 (patch)
treea56fe6988297bc022a328c911b60b2f0249e0df6 /src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
parentf5a109157ed048ff253bb2ba70f3e4372ec125ba (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.java44
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.