Dexguard总是与enum一起崩溃



我的应用程序使用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.** {
    *;
}

问题出在哪里?我该怎么修?它困扰了我好几个星期了。

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

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

您可以添加allowoptimization也可以添加

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

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

最新更新