Java 使用proguard在android上解析Gson
当我使用proguard时,我只有Gson的解析问题。在调试模式和无proguard的发布模式下,一切正常 这是我的json字符串: {“表格”:[{“名称”:“概要文件”,“列”:[{“标签”:“id”,“类型”:“文本”,“主要”:true},{“标签”:“名称”,“类型”:“文本”,“标签”:“年龄”,“类型”:“整数”},{“标签”:“人”,“类型”:“整数”},{“标签”:“齿轮”,“类型”:“齿轮”,“类型”:“齿轮”,“自定义”:true,“列表”:true}]},{“名称”:“齿轮”,“列”:[{“标签”:“id”,“类型”:“文本”,“主要”:true},{“标签”:“类型”:“类型”:“文本”:“齿轮”,“类型”:“文本”,“enum”:true},{“label”:“name”,“type”:“text”},{“label”:“id_Profile”,“type”:“integer”,“foreign_key”:true},{“name”:“Animal”,“columns”:[{“label”:“id”,“type”:“text”,“primary”:true},{“label”:“name”,“type”:“text”},{“label”:“magic”,“type”:“integer”},{“label”:“id_Profile”,“type”:“type”:“integer”,“foreign_key”:true}]} 这些是我的POJO:Java 使用proguard在android上解析Gson,java,android,gson,proguard,Java,Android,Gson,Proguard,当我使用proguard时,我只有Gson的解析问题。在调试模式和无proguard的发布模式下,一切正常 这是我的json字符串: {“表格”:[{“名称”:“概要文件”,“列”:[{“标签”:“id”,“类型”:“文本”,“主要”:true},{“标签”:“名称”,“类型”:“文本”,“标签”:“年龄”,“类型”:“整数”},{“标签”:“人”,“类型”:“整数”},{“标签”:“齿轮”,“类型”:“齿轮”,“类型”:“齿轮”,“自定义”:true,“列表”:true}]},{“名称”:“齿
public class Database {
private List<Table> tables;
public List<Table> getTables() {
return tables;
}
public void setTables(List<Table> tables) {
this.tables = tables;
}
}
public class Table {
private String name;
private List<Column> columns;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Column> getColumns() {
return columns;
}
public void setColumns(List<Column> columns) {
this.columns = columns;
}
}
但是当我试图从我的数据库对象调用方法getTables()
时:
for (Table table : database.getTables()) {
//...
}
我收到以下错误:java.lang.NullPointerException:尝试调用接口方法'java.util.Iterator java.util.List.Iterator()'在一个空对象引用上。
。我已经包括了proguard的注释。知道原因是什么吗?正如达尔文所评论的,在我的POJOs类中添加@Keep
注释修复了这个问题。正如达尔文所评论的,在我的POJOs类中添加@Keep
注释修复了这个问题。尝试在你的类中添加@Keep注释哇,这很有效!谢谢。什么时候应该使用@Keep注释或在proguard文件中设置规则来保留类?为什么这有kotlin
标记?我的错,我删除了你的类上的ittry@Keep注释哇,这很有效!谢谢。什么时候应该使用@Keep注释或在proguard文件中设置规则来保留类?这是为什么保存kotlin
标签?我的错,我把它删除了
for (Table table : database.getTables()) {
//...
}