2012-11-09 50 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

相关问题