我们在
Android应用中使用ORMLite.它工作正常,除非我们尝试在打开proguard的情况下进行构建.
我已经阅读了各种类似的帖子,到目前为止我已经进入了我的proguard-project.txt
-keep class com.j256.** { *; }
如下面的讨论http://sourceforge.net/p/proguard/discussion/182456/thread/6765bb69所述
而且我有
-keepclassmembers class * { public <init>(android.content.Context); public <init>(android.app.Activity,int); }
正如另一个stackoverflow问题Proguard with OrmLite on Android中所建议的那样
但它仍然无法正常工作.如果我添加,我可以让它运行
-dontobfuscate
但这有点遗漏了首先使用proguard的观点.
当我跑步时,我得到一个
IllegalStateException: Could not find OpenHelperClass because none of the generic parameters of class class <our.package.name>.LaunchActivity extends OrmLiteSqliteOpenHelper. You should use getHelper(Context,Class) instead.
哪里
public class LaunchActivity extends OrmLiteBaseActivity<DatabaseHelper>
和
public class DatabaseHelper extends OrmLiteSqliteOpenHelper
我已经添加
-keep public class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper -keep public class <our.package.name>.LaunchActivity
但仍然没有运气.这个问题似乎在之前(Problems with OrmLite and proguard obfuscation)被问过,但我希望有人知道解决方案是什么!
解决方法
错误消息提到了泛型参数,因此ORMLite可能使用反射来检索泛型类型信息.此信息存储在ProGuard默认删除的可选签名属性(Java擦除泛型类型)中.你可以保留它们
-keepattributes Signature
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。