使用Joda Time时,无法生成带有proguard的签名APK

我试图建立一个签名的APK。 我也在使用proguard 。 在我的应用程序中,我将JodaTime用于某些目的。 我在那里使用了joda-time-2.7.jar 。 首先我可以在没有启用proguard的情况下获得签名的APK,没有错误。 然后我启用了proguard并尝试生成APK但我生成了错误。 以下是生成的错误。

Warning:org.joda.time.LocalDateTime: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.LocalTime: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.LocalTime: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.Minutes: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.Minutes: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.MonthDay: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.MonthDay: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.Months: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.Months: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.MutableDateTime: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.MutablePeriod: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.Period: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.Seconds: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.Seconds: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.Weeks: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.Weeks: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.YearMonth: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.YearMonth: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.Years: can't find referenced class org.joda.convert.FromString Warning:org.joda.time.Years: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.base.AbstractDateTime: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.base.AbstractDuration: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.base.AbstractInstant: can't find referenced class org.joda.convert.ToString Warning:org.joda.time.base.AbstractPeriod: can't find referenced class org.joda.convert.ToString Warning:there were 37 unresolved references to classes or interfaces. You may need to add missing library jars or update their versions. If your code works fine without the missing classes, you can suppress the warnings with '-dontwarn' options. (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass) Exception while processing task java.io.IOException: Please correct the above warnings first. at proguard.Initializer.execute(Initializer.java:473) at proguard.ProGuard.initialize(ProGuard.java:233) at proguard.ProGuard.execute(ProGuard.java:98) at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074) at com.android.build.gradle.tasks.AndroidProGuardTask.doMinification(AndroidProGuardTask.java:139) at com.android.build.gradle.tasks.AndroidProGuardTask$1.run(AndroidProGuardTask.java:115) at com.android.builder.tasks.Job.runTask(Job.java:48) at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41) at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:227) at java.lang.Thread.run(Thread.java:745) 

下面是我的build.gradle文件:

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.theacetechnologies.voicetype" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' compile files('libs/joda-time-2.7.jar') } 

知道为什么我在启用proguard时无法生成被烧毁的APK? 我相信这也与Joda Time有关,因为我之前没有JODA时间生成了已启用proguard的签名APK。

将这些行添加到proguard文件中

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