使用GSON的Android应用程序在调试模式下工作,但在运行已签名的apk时则不行

时间:2011-12-27 11:37:41

标签: android gson apk

我已经制作了一个在模拟器中工作正常并在我的实际设备上调试的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输出根本不显示任何异常或堆栈跟踪。

1 个答案:

答案 0 :(得分:4)

尽可能使用调试输出将代码加速。这将为您提供更多洞察力。 我怀疑问题出在签字上。最有可能的是你的项目/构建配置。一个可能的原因可能是使用proguard(在工具链中)进行模糊处理 - 这会破坏您的命名策略。