diff options
author | corysmith <corysmith@google.com> | 2017-08-23 19:01:08 +0200 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2017-08-24 13:58:47 +0200 |
commit | 827d3d2f3350417d33f9f7caf614c7e48aabb071 (patch) | |
tree | 46ba2106449aed6414dff72a017e5513eee19a45 /src/tools/android/java/com/google/devtools/build/android/UnvalidatedAndroidData.java | |
parent | a7271d28ba82a24d235da2cf57045bac042d1bb7 (diff) |
Final tweaks and fixes to enable aapt2 for Blaze.
Implemented processing databinding for compile passes
RELNOTES: None
PiperOrigin-RevId: 166215052
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/UnvalidatedAndroidData.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/UnvalidatedAndroidData.java | 41 |
1 files changed, 36 insertions, 5 deletions
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 74976543e9..736c9d4ce7 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 @@ -13,7 +13,9 @@ // limitations under the License. package com.google.devtools.build.android; +import com.android.builder.core.VariantType; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.android.aapt2.CompiledResources; import com.google.devtools.build.android.aapt2.ResourceCompiler; @@ -21,10 +23,12 @@ import java.io.IOException; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Path; +import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.concurrent.ExecutionException; import java.util.regex.Pattern; +import javax.annotation.Nullable; /** * Android data that has yet to be merged and validated, the primary data for the Processor. @@ -45,8 +49,7 @@ class UnvalidatedAndroidData extends UnvalidatedAndroidDirectories { @VisibleForTesting static UnvalidatedAndroidData valueOf(String text, FileSystem fileSystem) { if (!VALID_REGEX.matcher(text).find()) { - throw new IllegalArgumentException( - text + " is not in the format '" + EXPECTED_FORMAT + "'"); + throw new IllegalArgumentException(text + " is not in the format '" + EXPECTED_FORMAT + "'"); } String[] parts = text.split(":"); return new UnvalidatedAndroidData( @@ -111,16 +114,44 @@ class UnvalidatedAndroidData extends UnvalidatedAndroidDirectories { assetDirs); } + /* Processes the resources for databinding annotations if dataBindingOut is defined. */ public UnvalidatedAndroidData processDataBindings( - Path dataBindingInfoOut, Path dataBindingWorkingDirectory) { + @Nullable Path dataBindingOut, String packagePath, Path dataBindingWorkingDirectory) + throws IOException { - return new UnvalidatedAndroidData(resourceDirs, assetDirs, manifest) { + if (dataBindingOut == null) { + return this; + } + + Preconditions.checkNotNull(manifest); + Preconditions.checkNotNull(packagePath); + + final List<Path> processed = new ArrayList<>(); + final Path metadataWorkingDirectory = dataBindingWorkingDirectory.resolve("metadata"); + final Path databindingResourceRoot = dataBindingWorkingDirectory.resolve("resources"); + for (Path resource : resourceDirs) { + processed.add( + AndroidResourceProcessor.processDataBindings( + databindingResourceRoot, + resource, + metadataWorkingDirectory, + VariantType.LIBRARY, + packagePath, + manifest, + false)); + } + + AndroidResourceOutputs.archiveDirectory( + metadataWorkingDirectory, dataBindingOut); + + return new UnvalidatedAndroidData(ImmutableList.copyOf(processed), assetDirs, manifest) { @Override protected CompiledResources archiveCompiledResources( List<Path> resources, Path workingDirectory, Path output) throws IOException { + // Update the archiving to ensure that the resources are correctly placed. return CompiledResources.from( AndroidResourceOutputs.archiveCompiledResources( - output, dataBindingWorkingDirectory, workingDirectory, resources), + output, databindingResourceRoot, workingDirectory, resources), manifest, assetDirs); } |