我在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.**
但是,它们还不够,因为文件仍然消失。
答案 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.** { *; }