繁体   English   中英

在将json转换为列表时释放构建问题

[英]Release build issues in converting json to list

我在main / assets文件夹中有一个json文件 -

[
  {
    "topic": "Studies",
    "subMessage": "....",
    "people": [
      ....
    ]
  },
  {
    "topic": "....",
    "subMessage": "...",
    "people": []
  }
]

我使用下面的方法来解析json并返回我的自定义列表 -

final List<MyList> readJson() {
        try {
            InputStream raw = context.getAssets().open(context.getResources().getString(R.string.read_the_json)); 
            Reader reader = new InputStreamReader(raw, "UTF-8);
            return new Gson().fromJson(reader, new TypeToken<List<MyList>>() {
            }.getType());
        } catch (Exception e) {
            Log.e(TAG, "Error : " + e.getMessage());
            return null;
        }
    }

对于Release版本,我有minifyEnabled true 但是对于调试构建它是错误的。

我发现如果我在发布版本中将minifyEnabled设置为false它可以工作,但我需要proguard用于发布版本。

问题出在Release build中,方法返回me [][] 但是在调试版本中,该方法会返回JSON中的值。

可能是什么问题呢?

之所以发生是因为proguard工具修改了你的课程。 您需要阻止proguard混淆模型类。

不太好但最简单的方法:

  • 使所有模型类(如MyList实现Serializable接口。

  • 然后在proguard-rules.pro文件中添加以下行:

    -keepclassmembers class * implements java.io.Serializable { *; }

更好的方法:

  • 直接在proguard-rules.pro文件中包含您的模型类。 例如。

    -keepclassmembers class com.example.MyList { *; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM