2009-07-12 5 views
14

코드를 난독 화하기 위해 ProGuard를 사용하고 있습니다. 내 프로젝트는 독립적으로 난독 화 된 몇 개의 모듈로 구성됩니다.throws 절을 사용하는 난독 화 방법

하나의 라이브러리에는 인터페이스가 포함되어 있습니다.

public interface IFace { 
    public int methodA(boolean b) throws CustomException; 
} 

또 다른 라이브러리 인터페이스가 내장되어 제 함께 implmentation에게

public class IFaceImpl implements IFace { 
    @Override 
    public int methodA(boolean b) throws CustomException { 
     return 0; 
    } 
} 

라이브러리를 제공하고, 두 번째는 난독 화 된 버전에 대해 구축된다. 불행하게도 인터페이스는 throws 절이 없으므로 @Override에서 컴파일이 실패합니다.

나는 인터페이스와 모든 멤버를 유지하는 proguard가 있지만 throws 절을 유지하는 방법을 알 수는 없습니다.

답변

35

나는 그것을 알아 냈다. 메이븐와

-keepattributes Exceptions

+0

당신을 감사합니다! 당신의 대답이없는 삶의 터전이었습니다. – Sileria

+0

엄청난 시간을 절약합니다. 감사. – dazed

0

예 :

<plugin> 
    <groupId>com.github.wvengen</groupId> 
    <artifactId>proguard-maven-plugin</artifactId> 
    <version>2.0.6</version> 
    <dependencies> 
     <dependency> 
      <groupId>net.sf.proguard</groupId> 
      <artifactId>proguard-base</artifactId> 
      <version>4.10</version> 
     </dependency> 
    </dependencies> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>proguard</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <proguardVersion>4.10</proguardVersion> 
     <options> 
      <option>-keepattributes Exceptions</option> 
      <option>-keep public class some.package.SomeClass{*;}</option> 
     </options> 
     <libs> 
      <lib>${java.home}/lib/rt.jar</lib> 
      <lib>${java.home}/lib/jce.jar</lib> 
      <lib>${java.home}/lib/jsse.jar</lib> 
     </libs> 
    </configuration> 
</plugin>