我已经做了一个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(位于toolchain中)的混淆-这将破坏您的命名策略。

07-28 08:36