rehacktive / waspdb

key/value data storage library for Android, pure java and encrypted
Apache License 2.0
226 stars 24 forks source link

Unable to create serializer "com.esotericsoftware.kryo.serializers.FieldSerializer" #8

Closed martinbonnin closed 8 years ago

martinbonnin commented 8 years ago

I get the bellow error when trying to create a WaspDb. Any idea what went wrong ?

    ERROR on serializeToDisk:Unable to create serializer "com.esotericsoftware.kryo.serializers.FieldSerializer" for class: net.rehacktive.waspdb.internals.collision.exceptions.WaspDataPage
        at net.rehacktive.waspdb.internals.collision.KryoStoreUtils.serializeToDisk(KryoStoreUtils.java:53)
        at net.rehacktive.waspdb.WaspFactory.storeDatabase(WaspFactory.java:144)
        at net.rehacktive.waspdb.WaspFactory.createDatabase(WaspFactory.java:122)
        at net.rehacktive.waspdb.WaspFactory.openOrCreateDatabase(WaspFactory.java:64)
        at com.dailymotion.dailymotion.util.Wasp.init(Wasp.java:23)
        at com.dailymotion.dailymotion.DailymotionApplication.onCreate(DailymotionApplication.java:148)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4707)
        at android.app.ActivityThread.-wrap1(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        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)
rehacktive commented 8 years ago

It looks like an exception inside the kryo library, used by WaspDB. Could you provide a sample code? And, if possible, the Android version/device used?

martinbonnin commented 8 years ago

I'm testing on a Nexus 5 with Android 6.0.1. The app is pretty big, I'll try to isolate a sample code. This is called in Application.onCreate() so at the very beginning.

martinbonnin commented 8 years ago

Looks like a proguard issue....

martinbonnin commented 8 years ago

Got it working with:

-keep class net.rehacktive.waspdb.** { *; }
-keep class com.esotericsoftware.kryo.** { *; }
rehacktive commented 8 years ago

thanks. I'll add the suggestion on the documentation.