aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java34
1 files changed, 26 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
index 4b8574bda3..a4c0704d05 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
+import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -108,7 +109,16 @@ public class AndroidSkylarkData {
named = true,
doc =
"Defaults to False. If true, resources will not be exposed to targets that depend"
- + " on them.")
+ + " on them."),
+ @Param(
+ name = "aapt_version",
+ positional = false,
+ defaultValue = "'auto'",
+ type = String.class,
+ named = true,
+ doc =
+ "The version of aapt to use. Defaults to 'auto'. 'aapt' and 'aapt2' are also"
+ + " supported."),
},
doc =
"Creates an AndroidResourcesInfo from this target's resource dependencies, ignoring local"
@@ -117,14 +127,22 @@ public class AndroidSkylarkData {
+ " manifest will be generated and included in the provider - this path should not"
+ " be used when an explicit manifest is specified.")
public static AndroidResourcesInfo resourcesFromDeps(
- SkylarkRuleContext ctx, SkylarkList<AndroidResourcesInfo> deps, boolean neverlink)
+ SkylarkRuleContext ctx,
+ SkylarkList<AndroidResourcesInfo> deps,
+ boolean neverlink,
+ String aaptVersionString)
throws EvalException, InterruptedException {
- return ResourceApk.processFromTransitiveLibraryData(
- ctx.getRuleContext(),
- ResourceDependencies.fromProviders(deps, /* neverlink = */ neverlink),
- AssetDependencies.empty(),
- StampedAndroidManifest.createEmpty(ctx.getRuleContext(), /* exported = */ false))
- .toResourceInfo(ctx.getLabel());
+ try {
+ return ResourceApk.processFromTransitiveLibraryData(
+ ctx.getRuleContext(),
+ ResourceDependencies.fromProviders(deps, /* neverlink = */ neverlink),
+ AssetDependencies.empty(),
+ StampedAndroidManifest.createEmpty(ctx.getRuleContext(), /* exported = */ false),
+ AndroidAaptVersion.chooseTargetAaptVersion(ctx.getRuleContext(), aaptVersionString))
+ .toResourceInfo(ctx.getLabel());
+ } catch (RuleErrorException e) {
+ throw new EvalException(Location.BUILTIN, e);
+ }
}
/**