2016-11-21 4 views
0

응용 라이브러리에 대한 의존성이와 클래스 멤버를 유지합니다. 내가 Gradle을 파일에 proguard-rules.pro에 의한 사용,ProGuard에서이</p> <pre><code>@SuppressWarnings("unused") </code></pre> <p>주석 클래스 회원이 "사용하지 않는"주석

minifyEnabled true 

을 만들었을 때, 위의 주석 구성원은 해당 라이브러리에서 해당 회원을 유지하는 방법

NoSuchFieldError error. 

으로, 런타임에 찾을 수 없습니다

"proguard-rules.pro" 
을 통해 주석

@SuppressWarnings("unused") 

와 패키지

+0

당신이 클래스의 패키지 이름을합니까 :

는이 같은 규칙을 사용할 수있는 클래스의 모든 필드를 유지하려면? –

+0

@masoudvali 예 클래스 패키지 이름이 있지만 프로젝트의 일부입니다. – Annada

+0

http://stackoverflow.com/questions/31607727/keep-method-name-from-obfuscator-proguard# @Keep를 추가하십시오. – muziling

답변

0

사용중인 특정 클래스에 대해 같은 것을 사용해보십시오 :

-dontwarn {package name}.{class name} 
-keep class {package name}.{class name} { *; } 
-keep interface {package name}.{class name} { *; } 
+0

제안 해 주셔서 감사합니다. 사실 @SuppressWarnings ("unused") 주석이있는 클래스 멤버를 유지하려고합니다. 어쨌든 다른 방법은 난독 화에 의해 제거되지 않습니다. 1. @SuppressWarnings ("unused")으로 주석 처리 된 메소드 유지 2. 포인트 -1에서 해당 메소드를 난독 화합니다. – Annada

2

@SuppressWarnings 주석이 소스 레벨 보존을 가지고, 따라서 그것은 ProGuard에서 처리되는 실제 클래스 파일에 존재하지 않습니다.

런타임에 필요할 경우 이러한 필드를 유지하려면 특정 ProGuard 규칙을 직접 추가해야합니다.

-keep class xxx.yyy { 
    <fields>; 
}