带有proguard的GreenDAO:NoSuchFieldException:TABLENAME

时间:2015-10-21 13:08:33

标签: android greendao

当我开始使用greenDAO for Android时,这个问题已经发生了几个月。 在我的应用程序中,我有proguard并且已经在greenDAO FAQ中建议了更改

-keepclassmembers class * extends de.greenrobot.dao.AbstractDao { public static java.lang.String TABLENAME; } -keep class **$Properties

另外,我已尝试在此Google group discussion

中发布了一些替代方案

但我仍然像这样崩溃

Caused by: java.lang.NoSuchFieldException: TABLENAME
   at java.lang.Class.getField(Class.java:1104)
   at de.greenrobot.dao.internal.DaoConfig.(DaoConfig.java:56)
   at de.greenrobot.dao.AbstractDaoMaster.registerDaoClass(AbstractDaoMaster.java:44)

有趣的是,这次崩溃只发生在三星设备上。最常见的是在Lollipop。

有人和我有同样的问题吗?

1 个答案:

答案 0 :(得分:3)

1

-libraryjars libs/greendao-1.3.7.jar
-keep class de.greenrobot.dao.** {*;}
 #保持greenDao的方法不被混淆
-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
  #用来保持生成的表名不被混淆     
 public static java.lang.String TABLENAME; } 
 -keep class **$Properties

2。也许你应该添加一些常见的保留规则