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/ValidateAndLinkResourcesAction.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/ValidateAndLinkResourcesAction.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/ValidateAndLinkResourcesAction.java | 68 |
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); } } |