首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何阻止proguard移除Android上的joda时间资源

如何阻止proguard移除Android上的joda时间资源
EN

Stack Overflow用户
提问于 2018-10-23 20:26:49
回答 1查看 529关注 0票数 1

我在我的Android应用程序中使用ProGuard和Joda Time (当然,我使用的是针对Android优化的版本:https://github.com/dlew/joda-time-android)。我遇到了这样的问题:在启用优化和模糊处理的情况下,当我尝试使用PeriodFormat时会出现错误

代码语言:javascript
复制
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使用了以下规则:

代码语言:javascript
复制
-dontwarn org.joda.convert.**
-dontwarn org.joda.time.**
-keep class org.joda.** { *; }
-keep interface org.joda.** { *; }
-keepdirectories org.joda.**

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

EN

回答 1

Stack Overflow用户

发布于 2018-10-23 20:57:02

java.util.MissingResourceException:找不到捆绑包java.util.PropertyResourceBundle、key PeriodFormat.space的资源

不能使用

代码语言:javascript
复制
-keep class org.joda.** { *; }
-keep interface org.joda.** { *; }

Do

代码语言:javascript
复制
 -keep class org.joda.time.** { *; }
 -keep interface org.joda.time.** { *; }

您的将是

代码语言:javascript
复制
-dontwarn org.joda.convert.**
-dontwarn org.joda.time.**
-keep class org.joda.time.** { *; }
-keep interface org.joda.time.** { *; }

阅读。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52949081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档