2012-07-12 2 views
1

ProGuard는 "보관"구문 here을 정의합니다.ProGuard의 "보관"인수의 일반화

[@annotationtype] [[!]public|final|abstract|@ ...] [!]interface|class|enum classname 
    [extends|implements [@annotationtype] classname] 
[{ 
    [@annotationtype] [[!]public|private|protected|static|volatile|transient ...] <fields> | 
                     (fieldtype fieldname); 
    [@annotationtype] [[!]public|private|protected|static|synchronized|native|abstract|strictfp ...] <methods> | 
                          <init>(argumenttype,...) | 
                          classname(argumenttype,...) | 
                          (returntype methodname(argumenttype,...)); 
    [@annotationtype] [[!]public|private|protected|static ... ] *; 
    ... 
}] 

일반화 된 수정 자와 유형을 계속 사용할 수 있습니까? 제 1 회 *이 부분에서 아무 의미 예를 -keep * * my.package.MySomething { *; } 를 들어
: [!]interface|class|enum : [!]public|final|abstract|@ ...]
이 부분에서 아무 의미한다.

좀 더 깊이 보면 ProGuard 인수를 동적으로 생성하려고하는데 my.package.MySomethingabstract class 또는 public enum 또는 기타인지 여부는 알 수 없습니다.

ProGuard에서 수행 할 수있는 방법이 있습니까?

답변

2

구성

-keep class my.package.MySomething { *; } 

당신이 원하는 않습니다. 일치 항목 (예 : 공개 또는 클래스 대신 인터페이스)을 추가로 제한하려면 액세스 수정 자만 추가하면됩니다.