我有一个看起来像这样的类:
public class MyClass {
private class MyInnerClass {
public void someFunc() { }
}
public void usefulMethod() {
... some stuff...
nativeUsefulMethod();
}
private native void nativeUsefulMethod();
}
我需要保留所有本机函数的方法名称以及包含它们的类,以便本机代码正常工作。好像没问题:
-keepnames class * {
native <methods>;
}
当我查看生成的 jar 时,我看到 MyClass 和 nativeUsefulMethod() 仍然存在,而有用的Method() 已被混淆。好的。但是,内部类仍然命名为“MyClass$MyInnerClass”。它不包含本机方法,所以我希望它被称为“MyClass$a”或只是“a”。
我测试了将“-keepnames”更改为“-keepclassmembernames”,两者的类名都被混淆了。绝对是这个指令保留了内部类名称。有没有办法混淆外部类名,而不是内部类名?