Gradle在proguard之后找不到内部类的符号

时间:2014-11-14 12:26:33

标签: android enums gradle proguard inner-classes

我的gradle项目包含一个主模块和一个库

该库的一个类包含一个枚举,我已从proguard混淆中排除,因为它在主项目中使用。

Gradle在构建时失败,出现“错误。无法找到符号变量MyEnum”,同样的错误也适用于另一个接口,也在类中声明

我已经反编译了我的库的classes.jar文件,该文件是在构建时生成的,枚举就在它“无法找到”的地方,就像MyClass $ MyEnum一样。编译后,“MyClass”类仍然存在于正确的位置。

这是我用于枚举的proguard代码:

-keep,allowoptimization enum com.mypackage.MyClass$MyEnum {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    **[] $VALUES;
    public *;
 }

我不允许发布任何代码

使用proguard时,内部类是否有任何特殊技巧?

1 个答案:

答案 0 :(得分:7)

不是因为我现在已经提取了我的内部课程,但这应该有效

-keep class my.outer.Class$MyInnerClass
-keepattributes InnerClasses