带有GSON的Android应用可在调试模式下运行,但在运行签名的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输出完全不显示任何异常或堆栈跟踪.

解决方法:

只要有可能,就用调试输出来增加代码.这将给您更多的见识.
我怀疑问题出在签名上.最有可能是您的项目/构建配置.一个可能的原因可能是对Proguard(工具链中的内容)产生了混淆-这将使您的命名策略更加混乱.

上一篇:前端笔试题2 JS部分


下一篇:改进-java.lang.IllegalStateException:预期为BEGIN_ARRAY,但为BEGIN_OBJECT