[英]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.