2011-11-01 2 views
2

라이브러리의 기능을 수행하기 위해 모두 함께 작동하는 몇 가지 개별 클래스로 구성된 라이브러리를 개발 중입니다. 그런 다음 클래스 중 하나가 모든 외부 코드가 라이브러리를 사용하는 몇 가지 공용 함수를 노출합니다.ProGuard를 사용하여 Java protected 요소를 난독 화합니다.

서로 다른 클래스가 상호 작용해야하므로 동일한 패키지에 모든 클래스를 넣고 "보호 된"요소 (클래스 및 함수)가 많습니다.

문제는 기본적으로 ProGuard는 나중에 동일한 패키지의 다른 클래스와 결합 될 수 있으므로 이러한 보호 된 요소를 난독 화하지 않습니다. 보안상의 이유로이 문제를 방지하고 싶습니다.

그럼 궁금한 점이 있다면 ProGuard가 사적인 것과 보호 된 요소를 난독 화하도록 할 수 있습니까?

다른 말로하면 ProGuard에게 "이 패키지에 물건을 추가 했으니 각 클래스의 개인 물건뿐만 아니라 패키지 내의 보호 된 물건도 난독 처리하십시오."라고 말할 수있는 방법이 있습니까?

감사합니다.

답변

6

ProGuard는 구성에서 -keep 옵션 중 하나와 일치하지 않는 모든 것을 난독 처리합니다. 예를 들어, ProGuard manual > Examples > A typical library에서 :

-keep public class * { 
    public protected *; 
} 

이 규격은 모든 공공 및 보호 클래스, 필드, 메소드를 유지합니다. ProGuard는 다른 것을 혼란스럽게합니다. 더 많이 혼란스럽게하려면 유지할 요소를 더 적게 지정해야합니다. 이와 같은 하나 이상의 옵션을 다음 ProGuard에서 설명서에 설명 된대로

-keep public class mypackage.MyPublicClass { 
    public void myPublicMethod(); 
} 

당신은 와일드 카드 또는 다른 템플릿을 사용할 수 있습니다.

기본적으로 ProGuard는 일부 요소를 유지하도록 지정하지 않으면 기본적으로 모든 것을 난독 처리합니다. ProGuard는 사용자가 원하는 것을 추측 할 수 없습니다.

관련 문제