2009-07-12 17 views
14

के साथ Obfuscating विधि मैं अपने कोड obfuscate करने के लिए ProGuard का उपयोग कर रहा हूँ। मेरी परियोजना में कुछ मॉड्यूल शामिल हैं, प्रत्येक स्वतंत्र रूप से obfuscated।फेंकता खंड

एक पुस्तकालय में एक इंटरफ़ेस शामिल है;

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 पर विफल रहता है क्योंकि इंटरफ़ेस में फेंकता खंड नहीं है।

मेरे पास इंटरफ़ेस और उसके सभी सदस्यों को रखने के लिए प्रोजेगार्ड है, लेकिन मैं यह नहीं समझ सकता कि फेंकने वाले खंड को कैसे रखा जाए।

उत्तर

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>