导致失败的可怕“转换为Dalvik格式失败,错误1”错误

时间:2012-11-09 17:31:47

标签: android proguard

我在这里搜索了如何解决这个问题,而我找到的任何东西都没有帮助。我怀疑解决方案会在here,但我错了。当我启用了详细信息时,我没有在控制台中获得任何内容,因此很难确定。我可以在启用proguard的情况下导出其他项目,但不是这个特定的项目。最初,我认为它与我正在使用的opencsv jar有关,但我删除了那个jar,并在代码中删除了它的引用,我仍然得到了错误。

导出没有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 个答案:

答案 0 :(得分:1)

这可能是ProGuard中的一个错误,产生无效代码,然后dx会报告模糊错误。确保您使用的是最新版本的ProGuard。如果问题仍然存在,您可以在ProGuard网站上报告,或者向我发送一个允许我重现问题的项目。

(我是ProGuard的开发者)