Explicitly keep default constructor in rules without members

R8 implicitly keeps the default constructor when no member rules are specified. Future versions of R8 will require apps to explicitly keep the default constructors that are required for the build to work.

This conservatively changes all keep rules that currently keep the default constructor to explicitly keep the default constructor.

Future work will attempt to tighten up the rules that do not require the default constructor to be kept.

Bug: 373579455
Test: existing
Change-Id: I92d22652d7f21ca1dd2e26358a44794b7ad5dff1
diff --git a/proguard.flags b/proguard.flags
index 9543f9d..cdd4a9f 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -107,13 +107,19 @@
 -keep class com.android.common.widget.CompositeCursorAdapter { *; }
 
 # Any class or method annotated with NeededForReflection.
--keep @com.android.contacts.test.NeededForReflection class *
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep @com.android.contacts.test.NeededForReflection class * {
+  void <init>();
+}
 -keepclassmembers class * {
-@com.android.contacts.test.NeededForReflection *;
+  @com.android.contacts.test.NeededForReflection *;
 }
 
 # Keep classes and methods that have the guava @VisibleForTesting annotation
--keep @com.google.common.annotations.VisibleForTesting class *
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep @com.google.common.annotations.VisibleForTesting class * {
+  void <init>();
+}
 -keepclassmembers class * {
   @com.google.common.annotations.VisibleForTesting *;
 }