我有一个java类,它有一些公共方法,我想保留。 (这已经完成) 我还有一个包含静态常量的InnerClass。 该课程有以下结构。
public class MyClass {
public static MyInnerClass {
public static final String MY_CONSTANT_1="constant 1";
public static final String MY_CONSTANT_2="constant 2";
public static final String MY_CONSTANT_3="constant 3";
public static final String MY_CONSTANT_4="constant 4";
public static final int MY_INT_1 = 1;
public static final int MY_INT_2 = 2;
}
public void method1() { }
public void method2() { }
public void method3() { }
public void method4() { }
}
我想上述课程。我想保留一些部分并删除剩下的部分。
我想保留方法method1
& method2
。我想保留内部类MyInnerClass
。我想保留一些MyInnerClass
字段,例如MY_CONSTANT_1
,MY_CONSTANT_2
& MY_INT_1
。休息一切都应该删除。
我的节目如下 -
-keep public class com.mypackage.MyClass**
-keepclassmembers class com.mypackage.MyClass** {
public *** method1(...);
public *** method2(...);
}
-keepclassmembers class com.mypackage.MyClass.MyInnerClass** {
public static final java.lang.String MY_CONSTANT_1;
public static final java.lang.String MY_CONSTANT_2;
public static final int MY_INT_1;
}
这适用于顶级类,但我的MyInnerClass为空 我搜索了但是他们中的大多数人要么要么完全删除它,要么保留所有。
如果你们需要更多信息,请告诉我们。 提前致谢
答案 0 :(得分:1)
您需要使用' $'作为类与其内部类之间的分隔符,规则应该正常工作:
-keepclassmembers class com.mypackage.MyClass$MyInnerClass {
public static <fields>;
}