2013-07-19 26 views
18

我在我的android項目中使用了Joda時間API,當我導出簽名的apk時,我的項目沒有編譯,它顯示錯誤「Proguard返回錯誤代碼1。請查看控制檯」,下面是錯誤日誌,Android - Proguard沒有與Joda時間jar文件編譯

[2013-07-20 00:50:25 - CC] Proguard returned with error code 1. See console 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.DateMidnight: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.DateTime: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.DateTimeZone: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.DateTimeZone: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Days: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Days: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Duration: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Hours: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Hours: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Instant: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.LocalDate: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.LocalDate: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.LocalDateTime: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.LocalDateTime: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.LocalTime: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.LocalTime: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Minutes: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Minutes: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.MonthDay: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.MonthDay: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Months: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Months: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.MutableDateTime: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.MutableDateTime: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.MutablePeriod: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Period: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Seconds: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Seconds: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Weeks: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Weeks: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.YearMonth: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.YearMonth: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.FromString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.base.AbstractDuration: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.base.AbstractInstant: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC] Warning: org.joda.time.base.AbstractPeriod: can't find referenced class org.joda.convert.ToString 
[2013-07-20 00:50:25 - CC]  You should check if you need to specify additional program jars. 
[2013-07-20 00:50:25 - CC] Warning: there were 37 unresolved references to classes or interfaces. 
[2013-07-20 00:50:25 - CC]   You may need to specify additional library jars (using '-libraryjars'). 
[2013-07-20 00:50:25 - CC] java.io.IOException: Please correct the above warnings first. 
[2013-07-20 00:50:25 - CC] at proguard.Initializer.execute(Initializer.java:321) 
[2013-07-20 00:50:25 - CC] at proguard.ProGuard.initialize(ProGuard.java:211) 
[2013-07-20 00:50:25 - CC] at proguard.ProGuard.execute(ProGuard.java:86) 
[2013-07-20 00:50:25 - CC] at proguard.ProGuard.main(ProGuard.java:492) 

我proguard.cfg文件的樣子,

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class com.android.vending.licensing.ILicensingService 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 

-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

誰能幫助我在這?我需要發佈我的應用程序。 解決方案將不勝感激。 在此先感謝。基於此職

回答

9

https://plus.google.com/112998433182673852267/posts/ApBBBjv9szw

什麼是實際發生的是,缺少「FromString」類是一個註釋,實際並不存在,如喬達時間 - 2.0.jar類文件。有一個聲明(http://www.scala-lang.org/node/10575)缺少註釋類文件不應該影響編譯,這聽起來是正確的,但我不知道這是正式說明。

您需要將http://joda-convert.sourceforge.net/添加到項目的構建路徑。

+0

嗨@Morrison暢,我補充說,喬達 - 轉換 - 1.3 .1 jar文件,仍然存在這個問題。現在警告減少了31.你能幫助我嗎? – Amarnath

+0

@Arnrnath如果是一個不同的問題(警告/錯誤),你最好用一個不同的問題。否則,更新你的問題。 –

+0

嗨@Morrison Chang,我在下面添加了最終的錯誤日誌作爲答案。你能幫助我嗎? – Amarnath

43

如果不需要缺少類,您可以抑制警告:

-dontwarn org.joda.convert.** 

見的ProGuard手冊>故障排除>Warning: can't find referenced class

+0

hi @Eric Lafortune,我應該在哪裏使用上面的代碼。 project.properties或proguard.cfg? – Amarnath

+0

嗨@Eric Lafortune,現在我可以建立。但它在運行應用程序時在操作欄sherlock中顯示錯誤。 – Amarnath

+0

嗨,現在我可以構建併成功運行prj。感謝您的支持。我在我的proguard文件中添加了actionbar sherlock suport代碼。 – Amarnath