您的位置:首页 > 其它

使用gson导致不能混淆的解决办法

2014-01-09 08:59 302 查看
由于使用了gson解析json字符串生成对象,导致混淆后的jar包不能正确使用。经过上网查阅资料,找到了正确的混淆方式。

原理:解压开混淆后的jar后发现,使用gson.from或者其他方法生成对象时,由于找不到正确的对应类,所以报错了,

我们只要把实现Serialized接口的类不混淆就可以了(因为gson转化过的类必须实现这个接口)。代码如下:

-keep class com.google.** {

<fields>;

<methods>;

}

-keepclassmembers class * extends java.io.Serializable {

static final long serialVersionUID;

private static final java.io.ObjectStreamField[] serialPersistentFields;

private void writeObject(java.io.ObjectOutputStream);

private void readObject(java.io.ObjectInputStream);

java.lang.Object writeReplace();

java.lang.Object readResolve();

}

# Gson specific classes

-keep class sun.misc.Unsafe {

<fields>;

<methods>;

}

# -keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson

-keep class com.myapp.po.** {

<fields>;

<methods>;

}

红色部分替换为自己的po包,也就是实现了Serialized接口的类所在的包。代表这些类不进行混淆。

关于android项目混淆打包注意事项,下面的文章总结也比较全面。
http://my.eoe.cn/smile_it/archive/3820.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐