在使用混淆运行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
)中第二个字段的类型未找到,但我在保护时非常小心不要混淆显著事件类,并且映射输出当然似乎表明所有所需的类和方法都存在,但当我禁用混淆时没有错误。
有没有人知道如何配置Proguard来防止这个错误?我现在完全不知所措,所以任何指针都将是一个很大的帮助:)
事实证明有一个简单的解决方案。我必须在proguard.cfg中添加以下行:
-keepattributes Signature
紫百合!