Dexguard总是与枚举崩溃

时间:2015-06-25 10:05:53

标签: android dexguard

我正在为我的应用程序使用DexGuard Enterprise。而且我发现每当我使用一个包含ENUM的库(例如:ZXing)时,DexGuard会对我的应用程序崩溃的代码做一些修改,例如

java.lang.AssertionError: impossible
at java.lang.Enum$1.create(Enum.java:49)
at java.lang.Enum$1.create(Enum.java:35)
at libcore.util.BasicLruCache.get(BasicLruCache.java:54)
at java.lang.Enum.getSharedConstants(Enum.java:211)
at java.lang.Enum.valueOf(Enum.java:191)
at com.google.zxing.BarcodeFormat.valueOf(:24)

我尝试了这些选项(正如我在其他问题上找到的那样),但没有工作

-keep enum com.google.zxing.** {
    *;
}

似乎是什么问题?我该怎么办呢?这已经困扰了我几个星期了。

2 个答案:

答案 0 :(得分:1)

尝试在proguard文件中添加以下内容。

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

答案 1 :(得分:0)

您也可以添加allowoptimization

   -keepclassmembers,allowoptimization enum * {
        public static **[] values();
        public static ** valueOf(java.lang.String);
    }

https://www.guardsquare.com/en/products/proguard/manual/examples#enumerations