4

当我在 OrmLite 的项目中使用 Proguard 时。我收到此错误

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.package.name/com.package.name.activities.StartActivity}:
java.lang.IllegalStateException: Could not find OpenHelperClass because none of the generic parameters of class class com.package.name.activities.StartActivity extends OrmLiteSqliteOpenHelper.  You should use getHelper(Context, Class) instead.

我已经尝试了Proguard 和 OrmLite on Android和其他资源的所有建议,但没有结果

4

4 回答 4

5

将以下内容放在您的 proguard-project 文件和 proguard-optimization 文件中(如果您使用优化)。

 # Your application may contain more items that need to be preserved; 
 # typically classes that are dynamically created using Class.forName: 
 # ormlite uses reflection 
 -keep class com.j256.** { *; }
 -keep class com.j256.**
 -keepclassmembers class com.j256.**
 -keep enum com.j256.**
 -keepclassmembers enum com.j256.**
 -keep interface com.j256.**
 -keepclassmembers interface com.j256.**

-keepclassmembers class * { 
  public <init>(android.content.Context); 
} 

-keepattributes *Annotation*

对于每个模型类:

-keep class com.xyz.components.**
-keepclassmembers class com.xyz.components.** { *; } 

我不喜欢最后一部分,但我厌倦了试图找到更好的解决方案。

于 2014-04-25T14:33:42.770 回答
1

我在带有 proguard 的 Android 上使用 ORMLite 时问了很多相同的问题,答案是添加

-keepattributes Signature

到proguard配置。

于 2013-01-11T09:17:58.900 回答
0

只是对最新版本OrmLite 5的一个小补充。

您可能希望添加这些行以隐藏一些新警告:

-dontwarn com.j256.ormlite.android.**
-dontwarn com.j256.ormlite.logger.**
-dontwarn com.j256.ormlite.misc.**

在此线程中查找更多详细信息:“我如何为 ormlite 编写 proguard 的配置?

于 2017-11-10T08:59:06.507 回答
0

您可以使用以下 proguard 配置来保留 OrmLite 使用的所有模型类

-keep @com.j256.ormlite.table.DatabaseTable class * {
    @com.j256.ormlite.field.DatabaseField <fields>;
    @com.j256.ormlite.field.ForeignCollectionField <fields>;
    # Add the ormlite field annotations that your model uses here
    <init>();
}
于 2017-09-24T02:17:30.333 回答