Proguard混淆删除类型

时间:2014-06-13 18:43:35

标签: android serialization obfuscation proguard simple-framework

使用模糊处理运行Proguard后,出现以下错误:

Could not find type for field 'significantEvents' private java.util.HashMap com.fsr.tracker.PersistedState.significantEvents at index 1

以下代码中出现此错误,我使用simpleXML序列化程序来序列化对象(persistedState):

Serializer serializer = new Persister(new DateMatcher());
ByteArrayOutputStream outputStream  = new ByteArrayOutputStream();
serializer.write(persistedState,outputStream);
return outputStream.toString();

在PersistedState类中,有一个HashMap定义如下:

private HashMap<String, SignificantEvent> significantEvents = new HashMap<String, SignificantEvent>();

该错误似乎表明找不到HashMap中的第二个字段的类型(SignificantEvent),但我非常注意不要在Proguarding时混淆SignificantEvent类,并且映射输出肯定似乎表明存在所有必需的类和方法但是当我禁用混淆时没有错误。

有谁知道如何配置Proguard以防止此错误?我此刻完全失败了,所以任何指针在这里都会有很大的帮助:)

1 个答案:

答案 0 :(得分:1)

事实证明有一个简单的解决方案。我必须在proguard.cfg中添加以下行:

-keepattributes Signature

中提琴!很干净。