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: I46dc4b01c0ee38a7033d8f16419dac00fe414fb1
diff --git a/proguard.flags b/proguard.flags
index c5bbb42..5531a9c 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -17,7 +17,10 @@
-keepattributes SourceFile,LineNumberTable,*Annotation*
# 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 *;
}
@@ -26,19 +29,46 @@
-keep class com.android.messaging.*.*.* { *; }
# Keep methods that have the @VisibleForAnimation annotation
--keep @interface com.android.messaging.annotation.VisibleForAnimation
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep @interface com.android.messaging.annotation.VisibleForAnimation {
+ void <init>();
+}
-keepclassmembers class * {
@com.android.messaging.annotation.VisibleForAnimation *;
}
--keep public class * extends android.app.Activity
--keep public class * extends android.app.Application
--keep public class * extends android.app.Service
--keep public class * extends android.content.BroadcastReceiver
--keep public class * extends android.content.ContentProvider
--keep public class * extends android.app.backup.BackupAgentHelper
--keep public class * extends android.preference.Preference
--keep public class * extends androidx.fragment.app.Fragment
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep public class * extends android.app.Activity {
+ void <init>();
+}
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep public class * extends android.app.Application {
+ void <init>();
+}
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep public class * extends android.app.Service {
+ void <init>();
+}
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep public class * extends android.content.BroadcastReceiver {
+ void <init>();
+}
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep public class * extends android.content.ContentProvider {
+ void <init>();
+}
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep public class * extends android.app.backup.BackupAgentHelper {
+ void <init>();
+}
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep public class * extends android.preference.Preference {
+ void <init>();
+}
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep public class * extends androidx.fragment.app.Fragment {
+ void <init>();
+}
-keep public class com.android.vcard.* { *; }
-keep class androidx.collection.* { *; }