2012-03-11 9 views
28

Ricevo un errore "Conversione in formato Dalvik non riuscita con errore 1" quando si utilizza il flag -dontobfuscate. Altrimenti la mia app esporta bene. Non voglio offuscare perché sto usando BugSense per il tracciamento degli errori e fanno pagare $ 99 al mese se hai bisogno di de-offuscare le tracce dello stack. Voglio ancora ottenere le dimensioni del file e i vantaggi di ottimizzazione di proguard.Utilizzo di Proguard con Android senza offuscamento

Se commento out -dontobfuscate ogni cosa funziona alla grande. Tranne le tracce dello stack illeggibile.

mio file progaurd.cfg:

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

sarò anche accettare una risposta che mi indica la direzione giusta. C'è un file di registro che dovrei guardare?

risposta

2

È necessario assicurarsi di utilizzare l'ultima versione di Android SDK o almeno l'ultima versione di ProGuard (versione 4.7 in questo momento di scrittura) all'interno dell'SDK (android-sdk/tools/proguard/lib/proguard.jar).

+0

sto usando 4.7 attualmente. – theJosh

+0

Potrebbe essere un bug in ProGuard o nello strumento dex. Se riesci a fornire un esempio che permetta di riprodurre il problema, sul bug tracker ProGuard, cercherò di esaminarlo. –

33

Aggiungi! Codice/allocazione/variabile è soluzione per Proguard bug quando -dontobfuscate sia impostato sulla -Ottimizzazioni

Per esempio

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable 
+0

sì, sembra che '-dontobfuscate' abbia bisogno di'! Codice/allocazione/variabile' – sherpya