android - 三星设备上的 Proguard "Missing type parameter"

标签 android gson proguard android-4.4-kitkat dexguard

我已经发布了一个安卓应用程序,被 dexguard 混淆了。一切似乎都很好,除了 Galaxy Tab 3 10.1 并且只有 Android 4.4,这是唯一向开发者控制台报告错误的设备。

我得到以下异常:

java.lang.RuntimeException: Missing type parameter.
at com.google.gson.reflect.TypeToken.<init>(:62)
at com....util.Helper$2.<init>(:398)


类 Helper.java 和第 398 行中的代码

return (Config) getSerializable(context, CONFIG, new TypeToken<Config>(){}.getType());


我的 dexguard 规则:

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-keep class sun.misc.Unsafe { *; }

# Application classes that will be serialized/deserialized over Gson
# path to the config class:  com/.../models/config/Config.java;
-keep class com....models.** { *; }

-keepattributes Signature


不仅我自己无法重现错误(我也有一个 Galaxy Tab 3 和 Android 4.2,更新不可用),它只涉及上述设备。

最佳答案

我的解决方案是避免使用 TypeToken 并将 dexguard 更新到最新版本。

例如:

代替

new Gson().fromJson(json, new TypeToken<Object>(){}.getType());

使用这个

new Gson().fromJson(json, Object.class);

关于android - 三星设备上的 Proguard "Missing type parameter",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26841391/

相关文章:

android - 如何在触摸 View 时暂停和恢复 kotlin 协程?

微调器列表项的android多语言

android - Moshi - Android Studio Canary Alpha12 -ExternalSynthetic0 被定义多次

java - android: proguard 混淆导入的 jar

Android - 使用 Android Studio 和 Gradle 的 httpcore 和 httpmime Proguard

android - 下载 PDF 时 InputStream 返回空文件

java - 无法序列化 HibernateProxy 的对象原因

java - 改造 2 和 GSON java.lang.IllegalArgumentException : Field map contained null value for key

java - 用于 Web 服务的 GSON

Android Studio ProGuard 似乎没有运行