1

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

似乎是什么问题?我该如何解决?它困扰了我好几个星期。

4

2 回答 2

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);
}
于 2016-05-13T23:32:32.453 回答
0

allowoptimization您还可以添加

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

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

于 2019-09-02T20:35:22.803 回答