Android 出口失败与“可怕的”;转换为Dalvik格式失败,错误为1“;错误

Android 出口失败与“可怕的”;转换为Dalvik格式失败,错误为1“;错误,android,proguard,Android,Proguard,我在这里到处寻找如何解决这个问题,但没有找到任何帮助。我怀疑这个解决方案是可行的,但我错了。当我启用了verbose时,控制台中没有任何内容,因此很难确定这一点。我可以导出启用proguard的其他项目,但不能导出这个特定项目。最初,我认为它与我正在使用的opencsv jar有关,但我删除了那个jar,并删除了代码中对它的引用,我仍然得到了错误 在没有proguard的情况下导出应用程序可以工作,并且应用程序本身运行良好 注意:AlternateJavaBridgelib是我在大多数项目中使用

我在这里到处寻找如何解决这个问题,但没有找到任何帮助。我怀疑这个解决方案是可行的,但我错了。当我启用了verbose时,控制台中没有任何内容,因此很难确定这一点。我可以导出启用proguard的其他项目,但不能导出这个特定项目。最初,我认为它与我正在使用的opencsv jar有关,但我删除了那个jar,并删除了代码中对它的引用,我仍然得到了错误

在没有proguard的情况下导出应用程序可以工作,并且应用程序本身运行良好

注意:AlternateJavaBridgelib是我在大多数项目中使用的库。我在其他应用程序中使用proguard导出APK没有问题(这就是为什么我认为它可能是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.**
-优化过程5
-dontusemixedcaseclassnames
-DontskipnonPublicLibraryClass
-不要翻转
-冗长的
-优化!代码/简化/算术,!字段/*,!类/合并/*
-重命名SourceFileAttribute源文件
-keepattributes源文件,LineNumberTable
-keep public class*扩展android.app.Activity
-keep public class*扩展android.app.Application
-keep public class*扩展了android.app.Service
-keep public class*扩展了android.content.BroadcastReceiver
-keep public class*扩展了android.content.ContentProvider
-keep public class*扩展了android.app.backup.BackupAgentHelper
-keep public class*扩展了android.preference.preference
-保持公共类com.android.vending.licensing.ILicensingService
-保留公共类au.com.bytecode**
-保留公共类java.bean**
-KeepClassSwithMemberNames类*{
本地人;
}
-keepclassswithmembers类*{
public(android.content.Context、android.util.AttributeSet);
}
-keepclassswithmembers类*{
public(android.content.Context,android.util.AttributeSet,int);
}
-keepclassmembers类*扩展了android.app.Activity{
public void*(android.view.view);
}
-keepclassmembers枚举*{
公共静态**[]值();
公共静态**valueOf(java.lang.String);
}
-keep class*实现android.os.Parcelable{
公开静态最终android.os.Parcelable$Creator*;
}
-保持类*实现java.io.Serializable{
静态最终长SerialVersionId;
私有void writeObject(java.io.ObjectOutputStream);
私有void readObject(java.io.ObjectInputStream);
公共布尔等于(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文件。

这可能是ProGuard中的一个错误,生成了无效代码,dx随后会在上面报告模糊错误。确保您使用的是最新版本的ProGuard。如果问题仍然存在,你可以在网站上报告,或者给我发邮件,让我重现问题


(我是ProGuard的开发人员)

谢谢Eric,修复了它。我以为我在早些时候升级了,但显然我没有。我现在可以在启用proguard的情况下导出应用程序。我发现了导致此问题的原因。我取消了正在处理的出口。一旦你这么做了,博克·普劳格德就会觉得。这次我也做了同样的事情,我不得不删除这个项目,然后将它重新导入到工作区以使它工作。希望这些信息能帮助你找到问题所在。