android - Dexguard 总是因枚举而崩溃

标签 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.** {
    *;
}

问题是什么?我该如何解决?这已经困扰我好几个星期了。

最佳答案

尝试在您的混淆文件中添加以下内容。

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

关于android - Dexguard 总是因枚举而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31047250/

相关文章:

c# - 通过 TCP 接收不完整/错误的字符串

android - 在 AlertDialog 中搜索

Android UDP 入站流量

java - 如何在带有 Gradle 的 Java 项目中使用 DexGuard

android - 如何在 dexguard 混淆中禁用非 ASCII 字符?

java - Proguard不会删除内部类中的Log.d?

java - 我应该在 Android 中使用什么类型的数据存储?

java - 如何在 Android 编程中对所有屏幕分辨率使用单个可绘制对象?

android - 如果发生错误,有没有办法让 DexGuard 以错误条件退出?

android - Dexguard vs Android 插件 - 中断构建过程