2013-07-19 57 views
18

Tôi đã sử dụng API thời gian Joda trong dự án Android của mình, dự án của tôi không biên dịch khi tôi xuất một apk đã ký, nó hiển thị lỗi "Proguard trả về với mã lỗi 1. Xem giao diện điều khiển", dưới đây là các bản ghi lỗi,Android - Proguard không biên dịch với tập tin jar Thời gian Joda

[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) 

tập tin proguard.cfg của tôi trông như thế nào,

-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 *; 
} 

có thể bất cứ ai giúp tôi về vấn đề này? tôi cần xuất bản ứng dụng của mình. giải pháp sẽ được đánh giá cao. cảm ơn trước.

Trả lời

9

Dựa trên bài ở đây: https://plus.google.com/112998433182673852267/posts/ApBBBjv9szw

gì đang thực sự xảy ra là lớp "FromString" mất tích là một chú thích đó không phải là thực hiện như một tập tin lớp học trong Joda thời gian 2.0.jar. Có một yêu cầu bồi thường (http://www.scala-lang.org/node/10575) rằng một tệp lớp chú thích bị thiếu không được coi là ảnh hưởng đến việc biên dịch, điều này nghe có vẻ chính xác, nhưng tôi không biết nơi này được chính thức tuyên bố.

Bạn sẽ cần thêm http://joda-convert.sourceforge.net/ vào đường dẫn xây dựng của dự án của bạn.

+0

Hi @Morrison Chang, tôi nói thêm rằng Joda-convert-1.3 .1 jar tập tin, vẫn còn vấn đề này tồn tại. bây giờ các cảnh báo giảm 31. bạn có thể giúp tôi về điều này? – Amarnath

+0

@Amarnath Nếu là một vấn đề khác (cảnh báo/lỗi), bạn nên sử dụng một câu hỏi khác. Nếu không, hãy cập nhật câu hỏi của bạn. –

+0

Xin chào @Morrison Chang, tôi đã thêm nhật ký lỗi cuối cùng bên dưới làm câu trả lời. bạn có thể giúp tôi về điều này không? – Amarnath

43

Nếu các lớp mất tích không cần thiết, bạn có thể ngăn chặn những lời cảnh báo:

-dontwarn org.joda.convert.** 

Xem hướng dẫn ProGuard> Troubleshooting>Warning: can't find referenced class

+0

hi @Eric Lafortune, tôi nên sử dụng mã ở trên . project.properties hoặc proguard.cfg? – Amarnath

+0

Xin chào @Eric Lafortune, bây giờ tôi có thể xây dựng. nhưng nó hiển thị lỗi trong sherlock của thanh tác vụ trong khi chạy ứng dụng. – Amarnath

+0

Hi bây giờ tôi có thể xây dựng và chạy prj thành công. cảm ơn sự hỗ trợ của bạn. tôi đã thêm các mã super khóa hành động trong tập tin proguard của tôi. – Amarnath