aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/ValidateAndLinkResourcesAction.java
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2017-08-23 19:01:08 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-08-24 13:58:47 +0200
commit827d3d2f3350417d33f9f7caf614c7e48aabb071 (patch)
tree46ba2106449aed6414dff72a017e5513eee19a45 /src/tools/android/java/com/google/devtools/build/android/ValidateAndLinkResourcesAction.java
parenta7271d28ba82a24d235da2cf57045bac042d1bb7 (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/ValidateAndLinkResourcesAction.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ValidateAndLinkResourcesAction.java68
1 files changed, 67 insertions, 1 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/ValidateAndLinkResourcesAction.java b/src/tools/android/java/com/google/devtools/build/android/ValidateAndLinkResourcesAction.java
index bca1bc9a63..9886be2778 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ValidateAndLinkResourcesAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ValidateAndLinkResourcesAction.java
@@ -14,6 +14,7 @@
// Copyright 2017 The Bazel Authors. All rights reserved.
package com.google.devtools.build.android;
+import com.google.common.base.Preconditions;
import com.google.devtools.build.android.aapt2.Aapt2ConfigOptions;
import com.google.devtools.build.android.aapt2.CompiledResources;
import com.google.devtools.build.android.aapt2.ResourceLinker;
@@ -34,6 +35,34 @@ public class ValidateAndLinkResourcesAction {
/** Action configuration options. */
public static class Options extends OptionsBase {
@Option(
+ name = "compiled",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ defaultValue = "null",
+ converter = Converters.ExistingPathConverter.class,
+ category = "input",
+ help = "Compiled resources to link.",
+ deprecationWarning = "Use --resources."
+ )
+ // TODO(b/64570523): Still used by blaze. Will be removed as part of the command line cleanup.
+ @Deprecated
+ public Path compiled;
+
+ @Option(
+ name = "manifest",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ defaultValue = "null",
+ converter = Converters.ExistingPathConverter.class,
+ category = "input",
+ help = "Manifest for the library.",
+ deprecationWarning = "Use --resources."
+ )
+ // TODO(b/64570523): Still used by blaze. Will be removed as part of the command line cleanup.
+ @Deprecated
+ public Path manifest;
+
+ @Option(
name = "resources",
documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
effectTags = {OptionEffectTag.UNKNOWN},
@@ -69,6 +98,16 @@ public class ValidateAndLinkResourcesAction {
public List<StaticLibrary> libraries;
@Option(
+ name = "packageForR",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ defaultValue = "null",
+ category = "input",
+ help = "Package for the resources."
+ )
+ public String packageForR;
+
+ @Option(
name = "staticLibraryOut",
documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
effectTags = {OptionEffectTag.UNKNOWN},
@@ -89,6 +128,17 @@ public class ValidateAndLinkResourcesAction {
help = "R.txt out."
)
public Path rTxtOut;
+
+ @Option(
+ name = "sourceJarOut",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ converter = Converters.PathConverter.class,
+ defaultValue = "null",
+ category = "output",
+ help = "Generated java classes from the resources."
+ )
+ public Path sourceJarOut;
}
public static void main(String[] args) throws Exception {
@@ -102,12 +152,28 @@ public class ValidateAndLinkResourcesAction {
try (ScopedTemporaryDirectory scopedTmp =
new ScopedTemporaryDirectory("android_resources_tmp")) {
+ CompiledResources resources =
+ // TODO(b/64570523): Remove when the flags are standardized.
+ Optional.ofNullable(options.resources)
+ .orElseGet(
+ () ->
+ CompiledResources.from(
+ Preconditions.checkNotNull(options.compiled),
+ Preconditions.checkNotNull(options.manifest)))
+ // We need to make the manifest aapt safe (w.r.t., placeholders). For now, just stub
+ // it out.
+ .processManifest(
+ manifest ->
+ AndroidManifestProcessor.writeDummyManifestForAapt(
+ scopedTmp.getPath().resolve("manifest-aapt-dummy/AndroidManifest.xml"),
+ options.packageForR));
ResourceLinker.create(aapt2Options.aapt2, scopedTmp.getPath())
.dependencies(Optional.ofNullable(options.deprecatedLibraries).orElse(options.libraries))
.buildVersion(aapt2Options.buildToolsVersion)
- .linkStatically(options.resources)
+ .linkStatically(resources)
.copyLibraryTo(options.staticLibraryOut)
+ .copySourceJarTo(options.sourceJarOut)
.copyRTxtTo(options.rTxtOut);
}
}