我制作了一个在模拟器中以及在实际设备上调试时都能正常运行的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输出完全不显示任何异常或堆栈跟踪.
解决方法:
只要有可能,就用调试输出来增加代码.这将给您更多的见识.
我怀疑问题出在签名上.最有可能是您的项目/构建配置.一个可能的原因可能是对Proguard(工具链中的内容)产生了混淆-这将使您的命名策略更加混乱.