diff options
author | ajmichael <ajmichael@google.com> | 2018-04-02 09:26:42 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-02 09:27:48 -0700 |
commit | cb16c5089953127690c8971d32dc3d4cf01b7620 (patch) | |
tree | 9769c8f778ef4eed4f3e241f60d4c929b985dcd0 /src/main/java/com/google/devtools | |
parent | 1592238818ce4235e689f7a77dd4fefc1a7dfc8a (diff) |
Create proguard.txt in android_library AAR output.
The proguard.txt is the concatenation of the proguard_specs on the android_library rule itself. Note that it does not include transitively defined proguard_specs.
Fixes https://github.com/bazelbuild/bazel/issues/4467
RELNOTES: android_library AAR output now contains proguard.txt
PiperOrigin-RevId: 191302610
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(); } |