我在 Android 上使用 joda-time 的 LocalDates。当我使用 Proguard 缩小我的应用程序时,我在比较 LocalDates(即,使用 LocalDate.equals())时看到 NullPointerException。
我做了一些探索,看起来问题归结为具有空字段的 LocalDate 的年表,例如,ISOChronology.year() 返回 null。这段代码在使用 Proguard 收缩时会触发 RuntimeException(但在使用未混淆代码时不会):
if (marketDay != null && marketDay.getChronology().year() == null) {
throw new RuntimeException("fail " + marketDay.getChronology());
}
正在使用的 Chronology 实例是普通的 ISOChronology[UTC] 实例。
我假设我的 Proguard 配置中遗漏了一些神奇的咒语,但我对 joda 的理解不够好,无法弄清楚。我不想将所有的 joda 都标记为“保留”。有任何想法吗?