2013-07-19 14 views
18

Ho usato l'API di Joda time nel mio progetto Android, il mio progetto non è stato compilato quando esporto un apk firmato, mostrando l'errore "Proguard restituito con codice di errore 1. vedere console", qui di seguito è il log degli errori,Android - Proguard non è stato compilato con il file jar Joda Time

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

mio file proguard.cfg assomiglia,

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

qualcuno mi può aiutare su questo? ho bisogno di pubblicare la mia app. la soluzione sarà apprezzata. grazie in anticipo.

risposta

9

Basato sul post qui: https://plus.google.com/112998433182673852267/posts/ApBBBjv9szw

Che cosa sta realmente accadendo è che la classe "fromstring" mancante è un'annotazione che non è effettivamente presente in un file di classe in Joda-tempo-2.0.jar. Esiste un reclamo (http://www.scala-lang.org/node/10575) per cui un file di classe di annotazione mancante non dovrebbe influire sulla compilazione, il che sembra corretto, ma non so dove questo sia formalmente dichiarato.

È necessario aggiungere http://joda-convert.sourceforge.net/ al percorso di generazione del progetto.

+0

Hi @Morrison Chang, ho aggiunto che Joda-convert-1.3 .1 file jar, esiste ancora questo problema. ora gli avvertimenti si riducono di 31. puoi aiutarmi su questo? – Amarnath

+0

@Amarnath Se c'è un altro problema (avviso/errore), è meglio fare una domanda diversa. Altrimenti aggiorna la tua domanda. –

+0

Ciao @Morrison Chang, ho aggiunto il seguente registro degli errori come risposta. puoi aiutarmi anche su questo? – Amarnath

43

Se non sono necessarie le classi mancanti, è possibile eliminare gli avvertimenti:

-dontwarn org.joda.convert.** 

consultare il manuale ProGuard> Risoluzione dei problemi>Warning: can't find referenced class

+0

hi @Eric Lafortune, dove dovrei usare il codice sopra . project.properties o proguard.cfg? – Amarnath

+0

Ciao @Eric Lafortune, ora posso costruire. ma mostra un errore nella barra delle azioni sherlock durante l'esecuzione dell'app. – Amarnath

+0

Salve, ora posso compilare ed eseguire correttamente il prj. Grazie per il vostro sostegno. Ho aggiunto i codici suport sherlock della barra delle azioni nel mio file proguard. – Amarnath