Write final fields for library classes.
PiperOrigin-RevId: 276165877
diff --git a/src/test/java/com/google/devtools/build/android/RClassGeneratorActionTest.java b/src/test/java/com/google/devtools/build/android/RClassGeneratorActionTest.java
index a3c8704..3dbf763 100644
--- a/src/test/java/com/google/devtools/build/android/RClassGeneratorActionTest.java
+++ b/src/test/java/com/google/devtools/build/android/RClassGeneratorActionTest.java
@@ -213,7 +213,7 @@
}
@Test
- public void withNoBinaryAndLibraries_noFinalFields() throws Exception {
+ public void withNoBinaryAndLibraries_noFinalFields_fieldsFinalAnyway() throws Exception {
Path libFooManifest =
ManifestBuilder.of(tempDir.resolve("libFoo"))
.createManifest("AndroidManifest.xml", "com.google.foo", "");
@@ -256,11 +256,12 @@
"com/google/bar/R.class",
"META-INF/",
"META-INF/MANIFEST.MF");
- assertFieldsFinal(jarPath, "com.google.foo.R$attr", false);
- assertFieldsFinal(jarPath, "com.google.foo.R$id", false);
- assertFieldsFinal(jarPath, "com.google.foo.R$string", false);
- assertFieldsFinal(jarPath, "com.google.bar.R$attr", false);
- assertFieldsFinal(jarPath, "com.google.bar.R$drawable", false);
+ // --nofinalFields should have no effect on library R classes
+ assertFieldsFinal(jarPath, "com.google.foo.R$attr", true);
+ assertFieldsFinal(jarPath, "com.google.foo.R$id", true);
+ assertFieldsFinal(jarPath, "com.google.foo.R$string", true);
+ assertFieldsFinal(jarPath, "com.google.bar.R$attr", true);
+ assertFieldsFinal(jarPath, "com.google.bar.R$drawable", true);
ZipMtimeAsserter.assertEntries(zipEntries);
}
}
diff --git a/src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java b/src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java
index 04e0d39..72b8cc7 100644
--- a/src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/RClassGeneratorAction.java
@@ -189,7 +189,7 @@
logger.fine(
String.format("Load symbols finished at %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
// For now, assuming not used for libraries and setting final access for fields.
- fullSymbolValues.writeClassesTo(libSymbolMap, null, classOutPath, options.finalFields);
+ fullSymbolValues.writeClassesTo(libSymbolMap, null, classOutPath, true);
logger.fine(
String.format("Finished R.class at %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
} else {