2015-07-28 50 views
3

我使用了snappy DB library,我的'Location'类有默认的构造函数。使用proguard进行数组序列化的例外android

这是我的例外:

java.lang.IllegalArgumentException: Unable to create serializer "com.d.a.c.x" for class: Object[] 

这是我的代码:

import com.snappydb.DBFactory; 
ArrayList<Location> mLocationsList; 
snappydb = DBFactory.open(mContext, "LocationsList"); 
snappydb.put("LocationsList", mLocationsList.toArray()); 

抛出在这条线的异常:


不使用ProGuard,但使用ProGuard时,当工作正常
snappydb.put("LocationsList", locationsList.toArray()); 

我尝试了-keep class mypackagename.Location { *; }项目proguard和我的'地点'类实现Serilizable。

仍然没有工作...

+0

看来你'Location'类不是'Serializable'? – Razib

回答

6

-dontshrink标志似乎解决了问题。

这里是SnappyDBKryo全ProGuard的配置:

-dontshrink 
    -verbose 
    -dontwarn sun.reflect.** 
    -dontwarn java.beans.** 
    -keep,allowshrinking class com.esotericsoftware.** { 
     <fields>; 
     <methods>; 
    } 
    -keep,allowshrinking class java.beans.** { *; } 
    -keep,allowshrinking class sun.reflect.** { *; } 
    -keep,allowshrinking class com.esotericsoftware.kryo.** { *; } 
    -keep,allowshrinking class com.esotericsoftware.kryo.io.** { *; } 
    -keep,allowshrinking class sun.nio.ch.** { *; } 
    -dontwarn sun.nio.ch.** 
    -dontwarn sun.misc.** 

    -keep,allowshrinking class com.snappydb.** { *; } 
    -dontwarn com.snappydb.** 
+0

哇!你救了我的一天!谢谢;) 它的工作原理和混淆类 – Aryadegari

相关问题