두 가지 proguard 옵션의 차이점은 무엇입니까?간단한 proguard 유지 옵션의 차이점
-keep class com.myclass.**
-keep class com.myclass.** { *; }
두 가지 proguard 옵션의 차이점은 무엇입니까?간단한 proguard 유지 옵션의 차이점
-keep class com.myclass.**
-keep class com.myclass.** { *; }
첫 번째 규칙 만 클래스 자신 (기본 생성자)를 유지합니다.
두 번째 규칙은 모두 메서드 및 필드에을 클래스에 유지합니다.
-keep class com.myclass.**
com.myclass
패키지의 모든 클래스와 모든 하위 패키지를 유지합니다. 축소 및 최적화 단계에서 이러한 클래스의 구조를 변경하거나 제거해야하는 경우에도 그렇게하지 마십시오.
위에서 정의한대로 com.myclass
패키지의 모든 클래스와 해당 클래스의 모든 필드 및 메소드를 유지합니다.
차이점의 예 : 첫 번째 명령을 사용하면 내 진입 점 메서드 (예 : main
)가 여전히 축소되어 최적화되고 난독 화 될 수 있습니다. 이러한 메소드의 시그니처를 손상시키지 않고 유지하려면 필요한 메소드 또는 필드를 지정할 수 있습니다 (또는 와일드 카드 *
). 이것은 반성과 서명과 이름이 그대로 유지되어야하는 다른 상황에 필수적입니다.
-keepnames
및 유사한 명령은 서명을 보관하지만 축소하는 동안 이미 제거되지 않은 경우에만 사용됩니다.