aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
index 637afabf25..8a0d0e66ab 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.android;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
+import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
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.rules.java.ProguardHelper;
@@ -46,6 +47,8 @@ public class ProcessedAndroidData {
private final Artifact apk;
@Nullable private final Artifact dataBindingInfoZip;
private final ResourceDependencies resourceDeps;
+ @Nullable private final Artifact resourceProguardConfig;
+ @Nullable private final Artifact mainDexProguardConfig;
/** Processes Android data (assets, resources, and manifest) for android_binary targets. */
public static ProcessedAndroidData processBinaryDataFrom(
@@ -72,6 +75,18 @@ public class ProcessedAndroidData {
.setDataBindingInfoZip(
DataBinding.isEnabled(ruleContext)
? DataBinding.getLayoutInfoFile(ruleContext)
+ : null)
+ .setFeatureOf(
+ ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_of")
+ ? ruleContext
+ .getPrerequisite("feature_of", Mode.TARGET, ApkInfo.PROVIDER)
+ .getApk()
+ : null)
+ .setFeatureAfter(
+ ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_after")
+ ? ruleContext
+ .getPrerequisite("feature_after", Mode.TARGET, ApkInfo.PROVIDER)
+ .getApk()
: null);
return buildActionForBinary(ruleContext, builder, manifest);
}
@@ -185,7 +200,8 @@ public class ProcessedAndroidData {
.setApkOut(ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_APK))
.setRTxtOut(ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT))
.setSourceJarOut(
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_JAVA_SOURCE_JAR));
+ ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_JAVA_SOURCE_JAR))
+ .setSymbols(ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_MERGED_SYMBOLS));
}
/**
@@ -219,9 +235,12 @@ public class ProcessedAndroidData {
Artifact sourceJar,
Artifact apk,
@Nullable Artifact dataBindingInfoZip,
- ResourceDependencies resourceDeps) {
+ ResourceDependencies resourceDeps,
+ @Nullable Artifact resourceProguardConfig,
+ @Nullable Artifact mainDexProguardConfig) {
return new ProcessedAndroidData(
- resources, assets, manifest, rTxt, sourceJar, apk, dataBindingInfoZip, resourceDeps);
+ resources, assets, manifest, rTxt, sourceJar, apk, dataBindingInfoZip, resourceDeps,
+ resourceProguardConfig, mainDexProguardConfig);
}
private ProcessedAndroidData(
@@ -232,7 +251,9 @@ public class ProcessedAndroidData {
Artifact sourceJar,
Artifact apk,
@Nullable Artifact dataBindingInfoZip,
- ResourceDependencies resourceDeps) {
+ ResourceDependencies resourceDeps,
+ @Nullable Artifact resourceProguardConfig,
+ @Nullable Artifact mainDexProguardConfig) {
this.resources = resources;
this.assets = assets;
this.manifest = manifest;
@@ -241,6 +262,8 @@ public class ProcessedAndroidData {
this.apk = apk;
this.dataBindingInfoZip = dataBindingInfoZip;
this.resourceDeps = resourceDeps;
+ this.resourceProguardConfig = resourceProguardConfig;
+ this.mainDexProguardConfig = mainDexProguardConfig;
}
/**
@@ -278,7 +301,7 @@ public class ProcessedAndroidData {
// Combined resource processing does not produce aapt2 artifacts; they're nulled out
ValidatedAndroidResources validated =
ValidatedAndroidResources.of(merged, rTxt, sourceJar, apk, null, null, null);
- return ResourceApk.of(validated, assets);
+ return ResourceApk.of(validated, assets, resourceProguardConfig, mainDexProguardConfig);
}
public MergedAndroidAssets getAssets() {