diff --git a/buildSrc/src/main/java/Config.kt b/buildSrc/src/main/java/Config.kt index a08e9c7b8..92ac33ad2 100644 --- a/buildSrc/src/main/java/Config.kt +++ b/buildSrc/src/main/java/Config.kt @@ -1,5 +1,5 @@ object Config { - val kotlinVersion = "1.3.60" + val kotlinVersion = "1.3.61" val kotlinStdLib = "stdlib-jdk8" object BuildPlugins { @@ -20,7 +20,8 @@ object Config { object Libs { val appCompat = "androidx.appcompat:appcompat:1.1.0" val timber = "com.jakewharton.timber:timber:4.7.1" - val gson = "com.google.code.gson:gson:2.8.6" + // only bump gson if https://github.com/google/gson/issues/1597 is fixed + val gson = "com.google.code.gson:gson:2.8.5" val leakCanary = "com.squareup.leakcanary:leakcanary-android:2.0-beta-4" } diff --git a/sentry-android-core/proguard-rules.pro b/sentry-android-core/proguard-rules.pro index b68c4010d..960344ded 100644 --- a/sentry-android-core/proguard-rules.pro +++ b/sentry-android-core/proguard-rules.pro @@ -9,7 +9,7 @@ # Gson specific classes -dontwarn sun.misc.** -keep class com.google.gson.** { *; } -#-keep class com.google.gson.stream.** { *; } +-keep class sun.misc.Unsafe { *; } # Application classes that will be serialized/deserialized over Gson -keep class io.sentry.core.** { *; } @@ -30,4 +30,9 @@ @com.google.gson.annotations.SerializedName ; } +# Keep jetbrains annotations +-keep @interface com.jakewharton.nopen.annotation.** { *; } +-keep @interface org.jetbrains.annotations.** { *; } + + ##---------------End: proguard configuration for Gson ---------- diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/UnknownPropertiesTypeAdapterFactory.java b/sentry-android-core/src/main/java/io/sentry/android/core/UnknownPropertiesTypeAdapterFactory.java index 078f518f9..083c3f1a2 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/UnknownPropertiesTypeAdapterFactory.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/UnknownPropertiesTypeAdapterFactory.java @@ -86,7 +86,8 @@ public void write(final JsonWriter out, final T value) throws IOException { public T read(final JsonReader in) { // In its simplest solution, we can just collect a JSON tree because its much easier to // process - JsonElement jsonElement = JsonParser.parseReader(in); + JsonParser parser = new JsonParser(); + JsonElement jsonElement = parser.parse(in); if (jsonElement == null || jsonElement.isJsonNull()) { return null;