From 830c5f6645eded2d3b2ea15f2a1b2a7cc315f69e Mon Sep 17 00:00:00 2001 From: YOUNG HO CHA Date: Thu, 5 Aug 2021 12:16:28 +0900 Subject: [PATCH] Provide proguard/r8 rules --- .../com.android.tools/proguard/gson.pro | 1 + .../com.android.tools/r8-from-3.0.0/gson.pro | 7 +++++ .../META-INF/com.android.tools/r8/gson.pro | 29 +++++++++++++++++++ .../main/resources/META-INF/proguard/gson.pro | 23 +++++++++++++++ 4 files changed, 60 insertions(+) create mode 120000 gson/src/main/resources/META-INF/com.android.tools/proguard/gson.pro create mode 100644 gson/src/main/resources/META-INF/com.android.tools/r8-from-3.0.0/gson.pro create mode 100644 gson/src/main/resources/META-INF/com.android.tools/r8/gson.pro create mode 100644 gson/src/main/resources/META-INF/proguard/gson.pro diff --git a/gson/src/main/resources/META-INF/com.android.tools/proguard/gson.pro b/gson/src/main/resources/META-INF/com.android.tools/proguard/gson.pro new file mode 120000 index 0000000000..8900bde071 --- /dev/null +++ b/gson/src/main/resources/META-INF/com.android.tools/proguard/gson.pro @@ -0,0 +1 @@ +../../proguard/gson.pro \ No newline at end of file diff --git a/gson/src/main/resources/META-INF/com.android.tools/r8-from-3.0.0/gson.pro b/gson/src/main/resources/META-INF/com.android.tools/r8-from-3.0.0/gson.pro new file mode 100644 index 0000000000..3df7410f10 --- /dev/null +++ b/gson/src/main/resources/META-INF/com.android.tools/r8-from-3.0.0/gson.pro @@ -0,0 +1,7 @@ +##---------------Begin: R8 3.0 configuration for Gson ---------- + +# 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: R8 3.0 configuration for Gson ---------- diff --git a/gson/src/main/resources/META-INF/com.android.tools/r8/gson.pro b/gson/src/main/resources/META-INF/com.android.tools/r8/gson.pro new file mode 100644 index 0000000000..e408756c73 --- /dev/null +++ b/gson/src/main/resources/META-INF/com.android.tools/r8/gson.pro @@ -0,0 +1,29 @@ +# Whenever editing this file, update the following files: +# - META-INF/proguard/gson.pro + +##---------------Begin: R8 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.** { *; } + +# 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 ; +} + +##---------------End: R8 configuration for Gson ---------- diff --git a/gson/src/main/resources/META-INF/proguard/gson.pro b/gson/src/main/resources/META-INF/proguard/gson.pro new file mode 100644 index 0000000000..35b5024ba4 --- /dev/null +++ b/gson/src/main/resources/META-INF/proguard/gson.pro @@ -0,0 +1,23 @@ +# Whenever editing this file, update the following files: +# - META-INF/com.android.tools/r8/gson.pro + +##---------------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.** { *; } + +# 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 + +##---------------End: proguard configuration for Gson ----------