ProGuard在使用Joda Time时无法编译(Windows环境)。

8
实际上,这是一个答案而不是问题: 我在Windows上花费了很多时间使用JodaTime,并将其包含在我的Android项目中,使用ProGuard进行保护。
Proguard配置:
-libraryjars C:\Users\Reto\Documents\GitHub\advanceIT\LoveClockPAY\libs\joda-time-2.1.jar

我遇到了以下错误:
  1. ProGuard没有找到我的JAR文件,报错如下:

    Can't read [C:\Users\Reto\Documents\GitHub\advanceIT\LoveClockPAY\libs\joda-time-2.1.jar] (No such file or directory)

    解决方法

    -libraryjars libs/joda-time-2.1.jar

  2. ProGuard无法编译,并抛出很多类似以下的错误信息:

    Warning: org.joda.time.base.AbstractDuration can't find referenced class org.joda.convert.ToString

    解决方法

    # 排除这两个依赖类,否则它将无法编译

    -dontwarn org.joda.convert.FromString

    -dontwarn org.joda.convert.ToString


就一个简单应用而言,使用“-dontwarn”和“-libraryjars”参数生成的APK文件大小是一样的,两个可执行文件都能正常工作。因此,在这种情况下忽略这些警告是可以的。此外,添加额外的jar文件不会增加输出文件的大小(也不应该如此——我只是为了让未来的读者确认一下)。 - Richard Le Mesurier
1个回答

4

或者,作为问题2的解决方案,您可以添加一个在joda-convert-xxx.jar中包含的实现。它可以在joda-convert主页上找到。

然后只需将以下行添加到您的proguard配置中:

-libraryjars YOUR_DIR_WITHS_JARS/joda-convert-1.3.1.jar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接