2012-11-09 53 views
0

我已經在這裏搜索瞭解如何解決這個問題,沒有發現我的幫助。我懷疑解決辦法是在here,但我錯了。當我啓用詳細信息時,控制檯中沒有任何東西,所以這很難確定。我可以使用proguard導出其他項目,但這並不是特別的項目。最初,我認爲它與我正在使用的opencsv jar有關,但是我刪除了該jar,並在代碼中刪除了對它的引用,但仍然出現錯誤。導出失敗,可怕的「轉換爲Dalvik格式失敗,錯誤1」錯誤

導出應用程序沒有proguard的作品,並且應用程序本身運行良好。

注:AlternateJavaBridgelib的東西是我用於我的大部分項目的庫。我沒有在其他應用程序中導出帶有proguard的apks的問題(這就是爲什麼我可能已經是opencsv jar,它是我沒有在其他應用程序中使用的唯一其他jar)。

這裏是我的proguard.cfg的情況下,我失去了一些東西:

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


-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 
-keep public class au.com.bytecode.** 
-keep public class java.beans.** 

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

-keep class * implements java.io.Serializable { 
    static final long serialVersionUID; 
    private void writeObject(java.io.ObjectOutputStream); 
    private void readObject(java.io.ObjectInputStream); 
    public boolean equals(java.lang.Object);  
} 


-dontwarn java.beans.**, android.support.v4.**, com.google.ads.**, android.provider.CalendarContract*, com.dropbox.client2.**, 
android.view.Display, com.xiledsystems.AlternateJavaBridgelib.components.altbridge.FormFragment, android.widget.Switch, au.com.bytecode.opencsv.** 

編輯:好像proguard的實際工作。在proguard出於某種原因運行後,它似乎失敗了。我得到了爲項目生成的轉儲,映射,種子和使用txt文件。

回答

1

這可能是ProGuard中的一個錯誤,它會生成無效的代碼,然後dx報告不明確的錯誤。確保您使用的是最新版本的ProGuard。如果問題仍然存在,您可以在ProGuard網站上報告,或者給我發送一個項目,讓我可以重現問題。

(我是他的開發者的ProGuard)

+0

謝謝埃裏克,修復它。我以爲我已經升級了一點,但顯然我沒有。我現在可以導出啓用了proguard的應用程序。 – Ryan

+0

我發現了什麼引起了這個問題。我在處理過程中取消了導出。一旦你這樣做,它似乎bork proguard。我這次做了同樣的事情,我不得不刪除該項目,並將其重新導入到工作區以使其正常工作。希望這個信息會幫助你找到問題。 – Ryan

相關問題