我正在尝试ProGuard一个包含内部枚举(MyInnerEnum
)的面向公众的类(MyClass
)文件。然而,在ProGuarding之后,内部枚举被分离到它自己的类文件MyClass$MyInnerEnum
中。如何防止ProGuard分离内部枚举?我需要能够使用点符号来访问内部枚举,比如MyClass.MyInnerEnum.ENUM_VALUE
,而不是像MyClass$MyInnerEnum.ENUM_VALUE
那样使用美元符号。
我的面向公众的类:
package com.myclass;
public interface MyClass {
enum MyInnerEnum {
ENUM_VALUE
}
}
我已经尝试了这些ProGuard配置选项,但都没有用:
<option>-keep enum com.myclass.MyClass** { *; }</option>
<option>-keep enum com.myclass.MyClass$* { *; }</option>
<option>-keep enum com.myclass.MyClass$MyInnerEnum { *; }</option>
发布于 2018-04-19 23:01:08
您可以通过保留外部类(在本例中为接口)和内部枚举来尝试一下。通过将以下行添加到您的proguard配置中,这应该会起作用:
-keep interface com.myclass.MyClass
-keep enum com.myclass.MyClass$MyInnerEnum
发布于 2018-12-17 15:42:19
我遇到了同样的问题。我通过添加以下内容来解决这个问题:
# don't proguard all inner enum, need to cooperate with "-keep enum com.companyname.abcd.ClassName$EnumName"
-keepattributes InnerClasses
...
-keep enum com.myclass.MyClass$MyInnerEnum
https://stackoverflow.com/questions/44934718
复制相似问题