diff options
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.java | 33 |
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() { |