aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build
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
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')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java44
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/UnvalidatedAndroidData.java3
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java8
3 files changed, 35 insertions, 20 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.
diff --git a/src/tools/android/java/com/google/devtools/build/android/UnvalidatedAndroidData.java b/src/tools/android/java/com/google/devtools/build/android/UnvalidatedAndroidData.java
index 736c9d4ce7..032aaedd38 100644
--- a/src/tools/android/java/com/google/devtools/build/android/UnvalidatedAndroidData.java
+++ b/src/tools/android/java/com/google/devtools/build/android/UnvalidatedAndroidData.java
@@ -141,8 +141,7 @@ class UnvalidatedAndroidData extends UnvalidatedAndroidDirectories {
false));
}
- AndroidResourceOutputs.archiveDirectory(
- metadataWorkingDirectory, dataBindingOut);
+ AndroidResourceOutputs.archiveDirectory(metadataWorkingDirectory, dataBindingOut);
return new UnvalidatedAndroidData(ImmutableList.copyOf(processed), assetDirs, manifest) {
@Override
diff --git a/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java b/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java
index 7f653d7808..309fa235ab 100644
--- a/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java
+++ b/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java
@@ -21,6 +21,7 @@ import com.google.common.base.Joiner;
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Streams;
import com.google.devtools.build.android.AaptCommandBuilder;
import com.google.devtools.build.android.AndroidResourceOutputs;
import com.google.devtools.build.android.Profiler;
@@ -216,7 +217,12 @@ public class ResourceLinker {
.when(densities.size() == 1)
.thenAddRepeated("--preferred-density", densities)
.add("--stable-ids", compiled.getStableIds())
- .addRepeated("-A", assetDirs.stream().map(Path::toString).collect(toList()))
+ .addRepeated(
+ "-A",
+ Streams.concat(
+ assetDirs.stream().map(Path::toString),
+ compiled.getAssetsStrings().stream())
+ .collect(toList()))
.addRepeated("-I", StaticLibrary.toPathStrings(linkAgainst))
.addRepeated(
"-R",