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