title: ProGuard avoid obfuscation of interface implementations
body: <p>I have an anonymous class which implements an interface from another jar file (which is passed in as library jar).</p>
  
  <pre><code>//Some jar file
  public interface B
  {
    void methodA();
  }
  
  //My App
  public class A implements B
  {
    public void methodA()
    {
      //implementation here
    }
  }
  </code></pre>
  
  <p>And its used in the app in the following manner:  </p>
  
  <pre><code>B var = new A();
  var.methodA();
  </code></pre>
  
  <p>After running into a bug (calling abstract method), I noticed ProGuard had renamed <code>methodA()</code> in class <code>A</code>. Note that there may be more instances of such wrong obfuscations.</p>
  
  <ul>
  <li>How do I stop proguard from renaming such interface implementations?</li>
  <li>Why is it renaming the method in the first place?</li>
  </ul>
  
  <p><strong>EDIT:</strong><br>
  This is how I specify my library jars:</p>
  
  <pre><code>&lt;libraryjar filter="!**\some.specific.jar,${base.dir}\dist\lib\*.jar" /&gt;
  </code></pre>
  
  <p>also tried:  </p>
  
  <pre><code>&lt;libraryjar jarfilter="!**\some.specific.jar" /&gt;
  &lt;libraryjar jarfilter="${base.dir}\dist\lib\*.jar" /&gt;
  </code></pre>
  
  <p>Neither worked. ProGuard doesn't read the library jars specified by the filter. It only reads the ones named explicitly.</p>