Update proguard.flags for GSON

Source: https://github.com/google/gson/blob/main/examples/android-proguard-example/proguard.cfg
Bug: 376189795
Test: run app
Change-Id: I12bb0d30c86cdafd6f7725bfc27f0fa8a6ad8987
diff --git a/android/TerminalApp/proguard.flags b/android/TerminalApp/proguard.flags
index 13ec24e..b93240c 100644
--- a/android/TerminalApp/proguard.flags
+++ b/android/TerminalApp/proguard.flags
@@ -1,7 +1,33 @@
-# Keep the no-args constructor of the deserialized class
--keepclassmembers class com.android.virtualization.vmlauncher.ConfigJson {
-  <init>();
+##---------------Begin: proguard configuration for Gson  ----------
+# Gson uses generic type information stored in a class file when working with fields. Proguard
+# removes such information by default, so configure it to keep all of it.
+-keepattributes Signature
+
+# For using GSON @Expose annotation
+-keepattributes *Annotation*
+
+# Gson specific classes
+-dontwarn sun.misc.**
+#-keep class com.google.gson.stream.** { *; }
+
+# Application classes that will be serialized/deserialized over Gson
+-keep class com.android.virtualization.vmlauncher.ConfigJson { <fields>; }
+-keep class com.android.virtualization.vmlauncher.ConfigJson$* { <fields>; }
+
+# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
+# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
+-keep class * extends com.google.gson.TypeAdapter
+-keep class * implements com.google.gson.TypeAdapterFactory
+-keep class * implements com.google.gson.JsonSerializer
+-keep class * implements com.google.gson.JsonDeserializer
+
+# Prevent R8 from leaving Data object members always null
+-keepclassmembers,allowobfuscation class * {
+  @com.google.gson.annotations.SerializedName <fields>;
 }
--keepclassmembers class com.android.virtualization.vmlauncher.ConfigJson$* {
-  <init>();
-}
+
+# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
+-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
+-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
+
+##---------------End: proguard configuration for Gson  ----------
\ No newline at end of file