diff options
Diffstat (limited to 'src/main/java/com/google/devtools')
3 files changed, 16 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarGeneratorBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarGeneratorBuilder.java index fdeb38d739..f259a48cd1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AarGeneratorBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarGeneratorBuilder.java @@ -39,6 +39,7 @@ public class AarGeneratorBuilder { private Artifact manifest; private Artifact rTxt; private Artifact classes; + private ImmutableList<Artifact> proguardSpecs = ImmutableList.of(); private Artifact aarOut; private boolean throwOnResourceConflict; @@ -81,6 +82,11 @@ public class AarGeneratorBuilder { return this; } + public AarGeneratorBuilder setProguardSpecs(ImmutableList<Artifact> proguardSpecs) { + this.proguardSpecs = proguardSpecs; + return this; + } + public AarGeneratorBuilder setThrowOnResourceConflict(boolean throwOnResourceConflict) { this.throwOnResourceConflict = throwOnResourceConflict; return this; @@ -118,6 +124,12 @@ public class AarGeneratorBuilder { ins.add(classes); } + for (Artifact proguardSpec : proguardSpecs) { + args.add("--proguardSpec"); + args.add(proguardSpec.getExecPathString()); + ins.add(proguardSpec); + } + args.add("--aarOutput"); args.add(aarOut.getExecPathString()); outs.add(aarOut); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java index 6aea0db21b..2a511f2c04 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java @@ -121,7 +121,8 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { collectTransitiveAars(ruleContext, transitiveAars, transitiveAarArtifacts); NestedSetBuilder<Artifact> proguardConfigsbuilder = NestedSetBuilder.stableOrder(); - proguardConfigsbuilder.addTransitive(new ProguardLibrary(ruleContext).collectProguardSpecs()); + ProguardLibrary proguardLibrary = new ProguardLibrary(ruleContext); + proguardConfigsbuilder.addTransitive(proguardLibrary.collectProguardSpecs()); AndroidIdlHelper.maybeAddSupportLibProguardConfigs(ruleContext, proguardConfigsbuilder); NestedSet<Artifact> transitiveProguardConfigs = proguardConfigsbuilder.build(); @@ -237,6 +238,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { .withRtxt(primaryResources.getRTxt()) .withClasses(classesJar) .setAAROut(aarOut) + .setProguardSpecs(proguardLibrary.collectLocalProguardSpecs()) .setThrowOnResourceConflict( ruleContext.getFragment(AndroidConfiguration.class).throwOnResourceConflict()) .build(ruleContext); diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java index b412bb2057..cae0ac8ae3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java @@ -89,7 +89,7 @@ public final class ProguardLibrary { /** * Collects the unvalidated proguard specs exported by this rule. */ - private Collection<Artifact> collectLocalProguardSpecs() { + public ImmutableList<Artifact> collectLocalProguardSpecs() { if (!ruleContext.attributes().has(LOCAL_SPEC_ATTRIBUTE, BuildType.LABEL_LIST)) { return ImmutableList.of(); } |