2011-09-28 2 views

답변

2

코드베이스에 전혀 사용되지 않는 클래스를 추가하십시오. Proguard는 난독 화 및/또는 제거 할 것입니다. 따라서 앱에서 리플렉션을 통해로드하면 ProGuard를 통해 실행 된 경우 ClassNotFoundException이 발생해야합니다.

+0

내 생각에 나는이 시도에서 결함을 찾기 위해 진지하게 시도했다 ... 나는 단지 그것을 할 수 없다. 이것은 자주 발생하지 않습니다 ... 훌륭한 답변 선생님! lol – rf43

+0

경고가 있습니다 - 내 대답을 읽으십시오. –

+0

저는 (일종의) 수정되었습니다. – rf43

1

@Sean 제안은 (외부) 종속성이없는 클래스를 사용합니다.

그러나 리터럴 문자열을 사용하지 않음으로써, ProGuard에서 반사의 사용을 감지 할 수 있습니다, 그래서 당신은 문자열의 이름에서 부하 클래스를 어떻게 든해야합니다, 조심 (아마도 텍스트 자원을?) : http://proguard.sourceforge.net/index.html#/FAQ.html%23forname

+0

ProGuard가 R 파일을 무시하기 때문에 정확합니다. 그게 내가 생각했던 방법 이었어. 이전의 코멘트 롤 – rf43

+0

무슨 뜻인지 잘 모르겠다. 문자열 리소스 파일에서 사용되지 않는 클래스 이름을 하드 코드 하시겠습니까? –

+0

예. 또는 문자열을 생성하는 다른 동적 방법을 사용하십시오. –

0

는 항상 이름이 변경되는 클래스를 선택 난독 화 후에 Proguard에 의해. 아래 코드에서 그 이름은 ExampleClass.java입니다. 런타임에 이름을 다음 줄과 함께 확인하십시오.

ExampleClass.java 
...  
public static final boolean OBFUSCATED = !ExampleClass.class.toString().contains("ExampleClass"); 

그게 전부입니다. 도우미 클래스 나 메서드가 필요하지 않으며 예외를 발생시키지 않고 작동합니다.

관련 문제