From bfb3de3809a550da08c39f95d64d2a6f707f8add Mon Sep 17 00:00:00 2001 From: Alex Humesky Date: Fri, 26 Aug 2016 22:38:27 +0000 Subject: Exclude resources jars from android_library rules from the apk_manifest because they contain useless stub ids. -- MOS_MIGRATED_REVID=131449999 --- .../build/lib/rules/android/AndroidLibrary.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java') 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 8867d77d8f..0b7f82df38 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 @@ -185,6 +185,11 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { androidSemantics.addTransitiveInfoProviders( builder, ruleContext, javaCommon, androidCommon, null); + NestedSetBuilder transitiveResourcesJars = collectTransitiveResourceJars(ruleContext); + if (androidCommon.getResourceClassJar() != null) { + transitiveResourcesJars.add(androidCommon.getResourceClassJar()); + } + builder .add(AndroidNativeLibraryProvider.class, new AndroidNativeLibraryProvider(transitiveNativeLibraries)) @@ -197,7 +202,9 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { new AndroidCcLinkParamsProvider(androidCommon.getCcLinkParamsStore())) .add(JavaPluginInfoProvider.class, JavaCommon.getTransitivePlugins(ruleContext)) .add(ProguardSpecProvider.class, new ProguardSpecProvider(transitiveProguardConfigs)) - .addOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL, transitiveProguardConfigs); + .addOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL, transitiveProguardConfigs) + .add(AndroidLibraryResourceClassJarProvider.class, + new AndroidLibraryResourceClassJarProvider(transitiveResourcesJars.build())); if (!JavaCommon.isNeverLink(ruleContext)) { builder.add(AndroidLibraryAarProvider.class, @@ -231,4 +238,15 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { } return builder; } + + private NestedSetBuilder collectTransitiveResourceJars(RuleContext ruleContext) { + NestedSetBuilder builder = NestedSetBuilder.naiveLinkOrder(); + Iterable providers = + AndroidCommon.getTransitivePrerequisites( + ruleContext, Mode.TARGET, AndroidLibraryResourceClassJarProvider.class); + for (AndroidLibraryResourceClassJarProvider resourceJarProvider : providers) { + builder.addTransitive(resourceJarProvider.getResourceClassJars()); + } + return builder; + } } -- cgit v1.2.3