MartinVonMartinsgrün MartinVonMartinsgrün - 2 months ago 20
Android Question

Proguard "Missing type parameter" on Samsung device

I`ve published an android app, obfuscated by dexguard. Everything seems to be fine, except for the Galaxy Tab 3 10.1 and only with Android 4.4, which is the only device, that reports errors to the developer console.

I get following exception:

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




Code in class Helper.java and line 398

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




My dexguard rules:

# 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




Not only that I can not reproduce the error myself (i also have an Galaxy Tab 3 with Android 4.2, update not available yet), it only concerns the above mentioned device.

Answer

My solution was to avoid the use of the TypeToken and updating dexguard to the latest version.

For example:

Instead of

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

use this

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