我正在为我的应用程序使用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.** {
*;
}
似乎是什么问题?我该怎么办呢?这已经困扰了我几个星期了。
答案 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