ormlite官网上没有找到proguard相关的配置说明,在stackoverflow上找到了如下配置:
|
1
2
3
4
5
6
7
8
9
|
# OrmLite uses reflection
-keep class com.j256.**
-keepclassmembers class com.j256.** { *; }
-keep enum com.j256.**
-keepclassmembers enum com.j256.** { *; }
-keep interface com.j256.**
-keepclassmembers interface com.j256.** { *; }
-keepattributes *Annotation*
|
能正式打包通过,但是在运行时会报一个异常:
|
1
|
no fields have a databasefield annotation in class <com.package.myclass>
|
原因是我的数据库表bo类中使用了ormlite的 @DatabaseField注解;这个异常能通过下面这一句
|
1
|
-keepclassmembers class com.package.bo.** { *; }
|
来忽略混淆bo包下的所有类的类成员,但是有时候这不是一个最好的方法因为bo包下有可能还有一些非数据库使用的bo类或者其他类。
最后,我从Proguard手册中找到了下面这个方法,可以仅忽略混淆使用了DatabaseField注解的类成员。
|
1
2
3
|
-keepclassmembers class * {
@com.j256.ormlite.field.DatabaseField *;
}
|
自此ormlite相关的proguard就正常了,在此做个记录。
另外如果程序里使用到了泛型,或许可能需要下面这一句
-keepattributes Signature
不混淆泛型
最后附上Proguard手册地址,传送门
- 本文固定链接: http://proliang.com/proguard-ormlite.html
- 转载请注明: Liang 2014年08月14日 于 PRO.LIANG Blog 发表
本文详细介绍了在使用ORMLite时遇到的ProGuard混淆冲突问题,并提供了解决方法,包括忽略特定类成员和避免混淆泛型。通过具体实例展示了如何在ProGuard规则文件中配置,以确保ORMLite与混淆工具兼容,同时保持应用正常运行。
2026

被折叠的 条评论
为什么被折叠?



