我已经制作了一个在模拟器中工作正常并在我的实际设备上调试的Android应用程序。
但是,当在设备上运行签名的apk时,我的GSON反序列化不起作用。
此代码中出现问题:
public static void parseLanguage(String response) {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setFieldNamingStrategy(new MyFieldNamingStrategy());
Gson gson = gsonBuilder.create();
_Helper.s = gson.fromJson(response, _Strings.class);
}
我也使用这个类:
class MyFieldNamingStrategy implements FieldNamingStrategy {
//Translates the Java field name into its JSON element name representation.
@Override
public String translateName(Field field) {
return field.getName();
}
}
我已经检查过名为“response”的字符串是一个有效的JSON字符串,但_Strings.class的实际填充不起作用,_Strings.class中包含的所有字符串都保持为空。
有谁知道为什么会这样?它仅在运行签名的apk时发生,并且Logcat输出根本不显示任何异常或堆栈跟踪。
答案 0 :(得分:4)
尽可能使用调试输出将代码加速。这将为您提供更多洞察力。 我怀疑问题出在签字上。最有可能的是你的项目/构建配置。一个可能的原因可能是使用proguard(在工具链中)进行模糊处理 - 这会破坏您的命名策略。