aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java4
-rw-r--r--src/main/protobuf/android_studio_ide_info.proto1
-rw-r--r--src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java31
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();
+ }
}