使用Progurad工具混淆代码 保留内部类并正常调用

来源:互联网 发布:深度优化dnf客户端 编辑:程序博客网 时间:2024/05/22 12:45
有一个类 cn.emagsoftware.test.Demo,
内部类:

public abstract interface GameCallback
{
  public abstract void onSuccess();

  public abstract void onFail();

  public abstract void onCancel();

}

使用Progurad混淆代码,保留此内部类
-keep interface cn.emagsoftware.test.Demo$GameCallback{
    public <methods>;
}

混淆成功,调用 却要以new Demo$GameCallback(){...};而不是正常的调用方式new Demo.GameCallback(){...};

解决:

在配置规则文件中加入:

-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

就可以了