2016-08-17 10 views
2

を見つけることができません。 exepctionで言及続いている:Ormliteは、私は私のプロジェクトのために有効にProGuardのに問題が発生したidフィールド

@DatabaseTable(tableName = "zaplanowane_zlecenie") 
public class ZaplanowaneZlecenie { 
    @DatabaseField(generatedId = true) 
    private UUID mZaplanowaneZlecenieId; 
    @DatabaseField(columnName = "data") 
    private DateTime mZaplanowanaData; 
    @DatabaseField(dataType = DataType.SERIALIZABLE) 
    private ZlecenieFiltrowane mZaplanowanyAdres; 
    @DatabaseField 
    @Nullable 
    private Double mLatitude; 
    @DatabaseField 
    @Nullable 
    private Double mLongitude; 

問題がある瞬間:

mPlannedRepo.deleteForDate(mSelectedData); 

コードは単純です - mDao.querで見つかったコレクションを削除しますyForEq 私はプロガードを使用していませんが、これらの方法はうまくいきます。しかし、私がproguardを有効にした場合、私は例外を述べ、私のコードは動作しません。

マイProGuardのファイル(OrmLiteとフラグメント):

# ORMLite uses reflection 
-keepattributes *DatabaseField* 
-keepattributes *DatabaseTable* 
-keepattributes *SerializedName* 
-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 Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod 

# Keep the helper class and its constructor 
-keep class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper 
-keepclassmembers class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper { 
    public <init>(android.content.Context); 
} 

助けてください!私はここで何が起こっているのか分かりません。代わりに、(有効な属性名のリストについては、ProGuard manual参照)、これらの間違ったProGuardの規則を使用しての

+2

http://stackoverflow.com/questions/9853096/proguard-with-ormlite-on-android#answer-31582883 ... btwから最後の行を追加します。変数の名前に磨きと英語を混ぜることは良い練習ではありません – Selvin

+0

ありがとう、それは助けました:D – masztalski

答えて

2

-keepattributes *DatabaseField* 
-keepattributes *DatabaseTable* 
-keepattributes *SerializedName* 

あなたがそのようなORMLiteアノテーションを使用して注釈を付けているすべてのフィールド/クラスを維持する必要があります。

-keep @com.j256.ormlite.table.DatabaseTable class * { 
    @com.j256.ormlite.field.DatabaseField <fields>; 
    @com.j256.ormlite.field.ForeignCollectionField <fields>; 
    <init>(); 
} 
関連する問題