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 发表