如何在内部类中保留外部类变量而不将它们列在proguard中?

时间:2015-07-28 19:58:22

标签: android proguard android-proguard

package com.hello

public class Outer extends Activity{
  int a;
  int b;
  array c;
  Boolean bol;

  public void onCreate() {
    a=1;
    b=2;
    c=new int[10];
    bol=true;
  }

  class Inner implements Runnable {

    public void run() {
      if (bol)
        for (int e=0;e<10;e++) c[e]=a+b;
    }   
  }
}

我怎么能告诉Progruad保留内部类的名称和内部类中使用的变量,即使它们是在onCreate方法中定义的?

我不想逐个列出每个变量。

1 个答案:

答案 0 :(得分:0)

保持内部类:

fetch

保留具有所需公共/受保护/私有/默认访问级别修饰符的字段:

# specific class (in brackets for example we keep all)* 
-keep class OuterFQNClassName$InnerClassName { *; }   
# all inner classes of outer class 
 -keep class OuterFQNClassName$** { *; }
# all inner classes 
 -keepattributes InnerClasses

*命名约定,在内部类和外部类的名称之间使用'$'分隔符

请学习一个proguard docs:

https://www.guardsquare.com/en/proguard/manual/attributes