2013-07-26 4 views
16

하나의 특정 클래스 com.acme.Algorithm의 개인 메소드와 상수를 난독 화하는 스마트 ProGuard 구성은 무엇입니까?ProGuard에서 단 하나의 클래스를 난독 처리하는 방법은 무엇입니까?

실수로 .jar 파일을 열었을 때 명백하지 않아야하는 알고리즘이 포함되어 있기 때문에 나는 그 파일을 혼란스럽게하고 싶습니다.

저는 ProGuard 초보자입니다. AFAIU, 당신은 "keep"을 사용해야 만합니다. 그러나 "obfuscate"의 긍정적 인 논리는 사용할 수 없습니다. 어떻게 내 수업을 "모든 것을 유지"설정에서 제외시킬 수 있을까요? 참고 : 나는 다른 클래스를 당황하게하고 싶지 않습니다. 왜냐하면 고객이 의미있는 스택 트레이스를 볼 수 있기를 원하기 때문입니다.

답변

22

단일 클래스를 난독 처리하는 것은별로 효과가 없습니다. 클래스 이름과 필드 이름 및 메서드 이름이 약간 변경 될 수 있으며 일부 코드가 최적화 될 수 있습니다. 난독 화는 작은 정보를 숨기는 데 덜 효과적입니다. 난독 화하는 응용 프로그램 코드가 많을수록 이해하기가 어려워집니다.

말했다되고 그건

을 지정할 수 있습니다

-keep class !com.acme.Algorithm { *; } 

그것은 com.acme.Algorithm 이외의 모든 클래스/필드/메소드를 유지합니다.

+0

내 문제는 : 여전히 위의 줄을 설정 한 다른 클래스를 난처하게 계속 시도하고 있습니다. 어떻게 이런 일이 일어날 수 있니? – Jacky

+0

또한 @Jacky와 같은 문제에 직면하고 있습니다. 모든 포인터가 문제를 해결합니다. –

관련 문제