2012-05-08 4 views
6

Proguard에서 클래스 이름을 난처하게하고 싶습니다. 나는이 라인을 Proguard.cfg에 가지고있다.Proguard에 클래스 이름을 난독 화하도록 지시하는 방법

-keepclasseswithmembers class * { 
public static <fields>; 
} 

-keepnames class * implements java.io.Serializable 
-keep public class com.google.** 

그리고 내가 알아 채지 못한 것은 클래스 이름이다. 그래서 내가 COM/테스트/ABCD/ActualClass.java 공용 클래스 ActualClassName이 확장 참조 jdgui을 실행하는 활동 등

이 또한 내가 방법을 실제 클래스 이름을 반환 참조하십시오.

import com.abcd.ActualClassName 

추천하기 추천

ActualClassname aa(); 

수입 문은 어떻게 Proguard와는 클래스 이름 자체를 당황하게 할 수 없습니다. 그것만 볼 수있는 활동이 아니라 내 어댑터가 난독 화되지 않습니다. 클래스 이름이 아니라 난독 처리가 진행됩니다.

위의 규칙에 따라 클래스 이름이 난독 화되는 것을 방지 할 수 있습니까?

업데이트 : 이후 위의 규칙을 제거하고 Android에서 확장하지 않는 유틸리티 클래스가 난독 화되지 않습니다. 나는 현재 Activity derivied 클래스처럼 유지되는 클래스에서 참조되는 클래스의 클래스 이름을 유지하는 것에 대한 암묵적인 규칙이 있는지 궁금해하고있다. 이름이 난독 화되지 않는 클래스는 공통점이 있습니다.

1) 정적 메소드 2) 활동 또는 직렬화 가능에서 파생 된 것과 같은 유형의 가져 오기. 3) 다른 클래스의 매개 변수가있는 메소드가 있습니다 (일부는 유지해야 할 수도 있음).

그러나 이러한 유틸리티 클래스를 보관해야하는 부분은 어디에도 없습니다.

+0

. 이 문제에 대한 해결책을 찾았습니까? – lnreddy

답변

1

당신의 문제는 첫 줄에서 오는 것이라고 생각합니다. '-keepclasseswithmembers'는 클래스 이름을 포함하므로, 정적 필드가있는 클래스는 이름을 유지합니다. 단순히 '-keepclassmembers'로 변경하면 정적 필드를 그대로두고 클래스 이름을 혼란스럽게합니다 (내가 원하는 것으로 가정하고 있음).

그렇긴하지만 내가 왜 이걸하고 싶은지 잘 모르겠다. 정적 변수 이름을 보존하려는 경우 클래스 이름도 그대로 유지하면서 정적 필드에 액세스하는 방법을 확인해야합니다. 왜 모든 정적 변수 이름을 보존하려고합니까?

+0

해당 행을 삭제했습니다. 이제는 유지되는 유틸리티 클래스가 유지되는 것을 보게됩니다. 보관되어있는 클래스에 의해 사용 중입니다. –

+1

흠. 전체 .cfg 파일을 올릴 수 있습니까? – alexc

3

이 코드를 찾을 수 있도록 동일한 정규화 된 클래스 이름을 유지해야하는 코드에는 여러 클래스가 있습니다. 위의 예 중 하나는 모두 Activity 클래스입니다. 이는 매니페스트에서 전체 이름으로 문자열로 정의되기 때문입니다. 이 클래스 이름을 바꾸려면 Android가 더 이상 클래스를 찾을 수 없습니다.

전형적인 Proguard와의 설정은 이와 같은 몇 가지 중요한 라인을 포함 안드로이드 SDK에서 Proguard와의 설정을 참조합니다 : 저도 같은 문제로 실행하고

-keep public class * extends android.app.Activity 
+0

음, 나는 모든 학급 이름들이 지켜지고 있음을보고 있습니다. 이후 나는 -keepclasseswithmembers를 제거했지만 여전히 같은 결과를 얻었습니까? –

+0

예를 들어, 나는 유틸리티 클래스를 가지고 있고 유지되고있다. 따라서 다른 클래스를 참조하거나 다른 클래스에서 참조하는 클래스 이름을 유지하는 것에 대한 암시 적 규칙이 있습니다. –

+0

(단지 첫 번째 원칙을 확인하는 것), Android 프로젝트에서'project.properties'의'proguard.config'에 대한 정의를 주석 해제 했습니까? , 그리고 가치는 무엇입니까? –

관련 문제