2009-07-12 3 views
14

私はコードを難読化するためにProGuardを使用しています。私のプロジェクトはいくつかのモジュールで構成されていて、それぞれが独立して難読化されています。throws節を使用した難読化メソッド

1つのライブラリにはインタフェースが含まれています。

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; 
    } 
} 

を提供するインターフェースを有するライブラリーを最初に構築され、そして第二は、難読化バージョンに対して構築されます。残念ながら、@Overrideではインターフェイスにthrows句がないため、コンパイルは失敗します。

私はインターフェースとすべてのメンバーを保持しているプロガードを持っていますが、スロー句を保持する方法を理解できません。

答えて

35

私はそれを理解しました。 Mavenを持つ

-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> 
関連する問題