title: How to obfuscate everything but public method names and attributes with proguard?
body: <p>I'm building an android framework and I need to obfuscate and shrink the jar to ship it to users.</p>
  
  <p>I'm using the proguard tool included in the android SDK and I have the following requirements for the output jar:</p>
  
  <ul>
  <li>keep all the classes included in the input jar, but obfuscate them. </li>
  <li>don't obfuscate the class names of the classes called in the `AndroidManifest.xml</li>
  <li>don't obfuscate the class name and public method names/attributes for the class that is used has an interface for the user, however do it for their contents.</li>
  </ul>
  
  <p>To do so, I use the following configuration :</p>
  
  <pre><code>-optimizationpasses 5
  -dontusemixedcaseclassnames
  -dontskipnonpubliclibraryclasses
  -dontpreverify
  -verbose
  
  -keep, allowobfuscation class com.company.*
  -keepclassmembers, allowobfuscation class * {
      *;
  }
  
  
  -keepnames class com.company.MyClass { *; }
  -keepclassmembernames class com.company.MyClass {
      public &lt;methods&gt;;
      public &lt;fields&gt;;
      #!private *; also tried this but it didn't work
  }
  </code></pre>
  
  <p>However my private classes names and attributes still have the same name even though the content is obfuscated. Did I miss something in my wildcards?</p>