如何阻止Proguard在Android上删除Joda时间资源

时间:2018-10-23 12:26:49

标签: android proguard jodatime

我在Android应用程序中使用ProGuard和Joda Time(当然,我使用针对Android优化的版本:https://github.com/dlew/joda-time-android)。我遇到一个问题,即启用优化和混淆功能后,尝试使用PeriodFormat时出现错误:

java.util.MissingResourceException: can't find resource for bundle java.util.PropertyResourceBundle, key PeriodFormat.space

我比较了有无Proguard时生成的APK的内容,发现未优化版本中的org / joda / time / format目录包含15个属性文件,而在优化版本中只有9个。在这些文件中,我看到了PeriodFormat.space键,因此毫无疑问是由这些文件丢失引起的异常。

如何配置proguard,以便在不进行任何优化的情况下将该目录的内容传输到优化的APK?

我已经在Joda Time中使用了以下规则:

-dontwarn org.joda.convert.**
-dontwarn org.joda.time.**
-keep class org.joda.** { *; }
-keep interface org.joda.** { *; }
-keepdirectories org.joda.**

但是,它们还不够,因为文件仍然消失。

1 个答案:

答案 0 :(得分:0)

  

java.util.MissingResourceException:找不到捆绑资源   java.util.PropertyResourceBundle,键PeriodFormat.space

不要

-keep class org.joda.** { *; }
-keep interface org.joda.** { *; }

要做

 -keep class org.joda.time.** { *; }
 -keep interface org.joda.time.** { *; }

您的proguard

-dontwarn org.joda.convert.**
-dontwarn org.joda.time.**
-keep class org.joda.time.** { *; }
-keep interface org.joda.time.** { *; }

阅读-keep options