Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proguard - Primary key field not found for model #10

Closed
SahSantoshh opened this issue Feb 26, 2018 · 4 comments
Closed

Proguard - Primary key field not found for model #10

SahSantoshh opened this issue Feb 26, 2018 · 4 comments

Comments

@SahSantoshh
Copy link

After proguard rules this is error
my proguardrules:
#ReActiveAndroid
-keep class com.reactiveandroid.** { *; }
-keep class com.reactiveandroid.. { *; }
-keep class * extends com.reactiveandroid.Model
-keep class * extends com.reactiveandroid.serializer.TypeSerializer
-keepattributes Column
-keepattributes Table
-keepattributes PrimaryKey
-keepattributes Unique
-keepattributes Annotation
-keepclassmembers class * {
@fully.qualified.package.AnnotationType *;
}
E/CrashlyticsCore: Failed to execute task. java.util.concurrent.TimeoutException at java.util.concurrent.FutureTask.get(FutureTask.java:177) at com.crashlytics.android.core.CrashlyticsBackgroundWorker.submitAndWait(CrashlyticsBackgroundWorker.java:41) at com.crashlytics.android.core.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:320) at com.crashlytics.android.core.CrashlyticsController$6.onUncaughtException(CrashlyticsController.java:300) at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:42) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690) E/AndroidRuntime: FATAL EXCEPTION: main Process: np.com.sahsantosh.shareExpense, PID: 15633 java.lang.RuntimeException: Unable to create application np.com.sahsantosh.shareExpense.common.ApplicationClass: java.lang.IllegalStateException: Primary key field not found for model Category at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4973) at android.app.ActivityThread.-wrap1(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1560) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:5765) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:683) Caused by: java.lang.IllegalStateException: Primary key field not found for model Category at com.reactiveandroid.internal.database.table.TableInfo.findPrimaryKeyField(TableInfo.java:187) at com.reactiveandroid.internal.database.table.TableInfo.<init>(TableInfo.java:70) at com.reactiveandroid.internal.database.DatabaseInfo.createTablesInfo(DatabaseInfo.java:153) at com.reactiveandroid.internal.database.DatabaseInfo.loadModels(DatabaseInfo.java:130) at com.reactiveandroid.internal.database.DatabaseInfo.<init>(DatabaseInfo.java:45) at com.reactiveandroid.ReActiveAndroid.init(ReActiveAndroid.java:53) at np.com.sahsantosh.shareExpense.common.ApplicationClass.onCreate(ApplicationClass.java:47) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1018) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4970) at android.app.ActivityThread.-wrap1(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1560)  at android.os.Handler.dispatchMessage(Handler.java:111)  at android.os.Looper.loop(Looper.java:207)  at android.app.ActivityThread.main(ActivityThread.java:5765)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:683) 

@agaDeonix
Copy link

@SahSantoshh Hi, you need add field with @PrimaryKey annotation

@SahSantoshh
Copy link
Author

SahSantoshh commented Mar 29, 2018

Thank You @agaDeonix for your response but Following code solved my issue:
#ReActiveAndroid
-keep class com.reactiveandroid.** { *; }
-keep class com.reactiveandroid.. { *; }
-keep class * extends com.reactiveandroid.Model
-keep class * extends com.reactiveandroid.serializer.TypeSerializer
-keepattributes Column
-keepattributes Table
-keepattributes PrimaryKey
-keepattributes Unique
-keepattributes Annotation
-keepclasseswithmembers class * { @com.reactiveandroid.annotation.Column ; }
-keepclasseswithmembers class * { @com.reactiveandroid.annotation.PrimaryKey ; }
-keepclasseswithmembers class * { @com.reactiveandroid.annotation.Unique ; }

@ImangazalievM ImangazalievM changed the title Primary key field not found for model Proguard - Primary key field not found for model Mar 29, 2018
@HamzehSoboh
Copy link

HamzehSoboh commented Jun 23, 2018

I'm getting this error while applying proguard:

Caused by: java.lang.NoSuchFieldException: No field REPLACE in class Lcom/reactiveandroid/annotation/ConflictAction; (declaration of 'com.reactiveandroid.annotation.ConflictAction' appears in /data/app/com.mobisailors.bluetube-2/base.apk:classes3.dex)

Any help?

Full error:
java.lang.NoSuchFieldError at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:688) at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:663) at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641) at libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170) at java.lang.reflect.Field.getAnnotation(Field.java:252) at com.reactiveandroid.internal.database.table.d.a(Unknown Source) at com.reactiveandroid.internal.database.table.d.<init>(Unknown Source) at com.reactiveandroid.internal.database.b.a(Unknown Source) at com.reactiveandroid.internal.database.b.a(Unknown Source) at com.reactiveandroid.internal.database.b.<init>(Unknown Source) at com.reactiveandroid.b.a(Unknown Source) at com.mobisailors.bluetube.controller.application.BlueTubeApp.a(Unknown Source) at com.mobisailors.bluetube.controller.application.BlueTubeApp.onCreate(Unknown Source) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1014) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4806) at android.app.ActivityThread.access$1600(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1452) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:234) at android.app.ActivityThread.main(ActivityThread.java:5526) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.NoSuchFieldException: No field REPLACE in class Lcom/reactiveandroid/annotation/ConflictAction; (declaration of 'com.reactiveandroid.annotation.ConflictAction' appears in /data/app/com.mobisailors.bluetube-2/base.apk:classes2.dex) at java.lang.Class.getDeclaredField(Native Method)

@ImangazalievM
Copy link
Owner

@HamzehSoboh try this Proguard rules:

##---------------Begin: ReActiveAndroid  ----------

-keep class com.reactiveandroid.** { *; }
-keep class com.reactiveandroid.**.** { *; }
-keep class * extends com.reactiveandroid.Model
-keep class * extends com.reactiveandroid.internal.serializer.TypeSerializer
-keepattributes *Annotation*
-keepattributes Table
-keepattributes Column
-keepattributes PrimaryKey
-keepattributes Unique
-keepattributes UniqueGroup
-keepattributes Index
-keepattributes IndexGroup

##---------------End: ReActiveAndroid  ----------

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants