2012-06-10 2 views
18

안녕하세요. Android 앱을 작성 중입니다. 애플리케이션을 난독 화하도록 Proguard를 설정했습니다. 그러나 클래스 로더를 사용하여 응용 프로그램에 다른 확장을 동적으로로드합니다. 문제는 이름이 바뀌면 올바르게로드되지 않는다는 것입니다. Proguard가 특정 클래스 이름을 난독 화시키지 않게하려면 어떻게해야합니까?Proguard는 수업 이름을 유지합니까?

답변

27

사용

수동 https://www.guardsquare.com/en/proguard/manual/usage#keepoptions을 참조하여 proguard.cfg에서 -keepnames 옵션 :

클래스와 그 클래스 멤버를 지정

짧은 class_specification -keep,allowshrinking에 대한

-keepnames class_specification 이름이 보존되지 않으면 보존해야합니다. 축소 단계에서 제거되지 않았습니다. 예를 들어, Serializable 인터페이스를 구현하는 클래스의 모든 클래스 이름을 유지하여 처리 된 코드가 원래 직렬화 된 클래스와 호환되도록 유지할 수 있습니다. 전혀 사용되지 않는 클래스는 계속 제거 할 수 있습니다. 난독 처리 할 때만 적용됩니다.

+3

그럼 입력 해주세요 : -keepnames com.randompackage.lol.ClassName – Nik

+0

전체 패키지로 할 수있는 방법이 있습니까? – Nik

+0

예 * 와일드 카드를 사용합니다. 즉, -keepnames com.randompackage.lol. * 모든 클래스를 롤에 보관할 것입니다. –

24

이 그대로 클래스 이름을 유지 :

-keepnames class com.somepackage.* 
9
은 ProGuard 어떤 클래스 이름을 변경하지 않는 모든 사람을위한

핸디 팁 : 당신이 읽을 수있는 스택 추적을 얻을 것이다

# please KEEP ALL THE NAMES 
-keepnames class ** { *; } 

이 방법을 여전히 필요없는 것들을 버리는 것입니다. :-)

+9

'''-dontobfuscate'''는 난독 화를 불가능하게하는 올바른 방법입니다. –

+0

틀린 길. 이 구성으로 난독 화를 해제하는 것이 좋습니다 : "-dontobfuscate/n -optimizations! code/allocation/variable" – oxied