diff options
3 files changed, 36 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java index dc3d6f0f3b..afe1d49349 100644 --- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java @@ -51,6 +51,7 @@ import com.google.devtools.build.lib.rules.android.AndroidCommon; import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider; import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider.SourceDirectory; import com.google.devtools.build.lib.rules.android.AndroidSdkProvider; +import com.google.devtools.build.lib.rules.android.LocalResourceContainer; import com.google.devtools.build.lib.rules.java.JavaExportsProvider; import com.google.devtools.build.lib.rules.java.JavaGenJarsProvider; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider; @@ -351,6 +352,9 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory { } } + builder.setGenerateResourceClass( + LocalResourceContainer.definesAndroidResources(ruleContext.attributes())); + return builder.build(); } diff --git a/src/main/protobuf/android_studio_ide_info.proto b/src/main/protobuf/android_studio_ide_info.proto index 7516d9c03b..7c729f3f12 100644 --- a/src/main/protobuf/android_studio_ide_info.proto +++ b/src/main/protobuf/android_studio_ide_info.proto @@ -48,6 +48,7 @@ message AndroidRuleIdeInfo { string java_package = 7; bool has_idl_sources = 8; LibraryArtifact idl_jar = 9; + bool generate_resource_class = 10; } message AndroidSdkRuleInfo { diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java index 40afb1707a..df30f4c200 100644 --- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java +++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java @@ -775,4 +775,35 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase RuleIdeInfo libInfo = getRuleInfoAndVerifyLabel("//com/google/example:foobar", ruleIdeInfos); assertThat(libInfo.getDependenciesList()).isEmpty(); } + + public void testAndroidLibraryGeneratesResourceClass() throws Exception { + scratch.file( + "java/com/google/example/BUILD", + "android_library(", + " name = 'resource_files',", + " resource_files = ['res/drawable/a.png'],", + " manifest = 'AndroidManifest.xml',", + ")", + "android_library(", + " name = 'manifest',", + " manifest = 'AndroidManifest.xml',", + ")", + "android_library(", + " name = 'neither',", + " srcs = ['FooBar.java'],", + " deps = [':resource_files', ':manifest']", + ")"); + + Map<String, RuleIdeInfo> ruleIdeInfos = buildRuleIdeInfo("//java/com/google/example:neither"); + RuleIdeInfo neither = getRuleInfoAndVerifyLabel( + "//java/com/google/example:neither", ruleIdeInfos); + RuleIdeInfo resourceFiles = getRuleInfoAndVerifyLabel( + "//java/com/google/example:resource_files", ruleIdeInfos); + RuleIdeInfo manifest = getRuleInfoAndVerifyLabel( + "//java/com/google/example:manifest", ruleIdeInfos); + + assertThat(neither.getAndroidRuleIdeInfo().getGenerateResourceClass()).isFalse(); + assertThat(resourceFiles.getAndroidRuleIdeInfo().getGenerateResourceClass()).isTrue(); + assertThat(manifest.getAndroidRuleIdeInfo().getGenerateResourceClass()).isTrue(); + } } |