title: How to reverse-engineer / decompile an Android APK which was obfuscated using ProGuard?
body: <p>Unfortunately, I have lost the source code of one of my apps which I obfuscated using ProGuard.<br>
  I still have the <code>.apk</code> file and some config files which were generated by ProGuard:</p>
  
  <ol>
  <li><code>dump.txt</code></li>
  <li><code>mapping.txt</code></li>
  <li><code>seeds.txt</code></li>
  <li><code>usage.txt</code></li>
  </ol>
  
  <p><strong>What have I done so far?</strong></p>
  
  <ol>
  <li><p>Decoded resource files using <a href="http://code.google.com/p/android-apktool/">apktool</a>.<br>
  Yay, I've got those back!</p></li>
  <li><p>Extracted <code>.apk</code> file and converted the <code>classes.dex</code> file into a <code>.jar</code> file using <a href="http://code.google.com/p/dex2jar/">dex2jar</a>.</p></li>
  </ol>
  
  <p>If I now view the source code (.jar file) using <a href="http://java.decompiler.free.fr/?q=jdgui">JD-Gui</a>, I see my obfuscated code. Something like this:</p>
  
  <pre><code>class c {
    TextView a;
    TextView b;
    TextView c;
    TextView d;
    CheckBox e;
  }
  
  protected List a(Uri[] paramArrayOfUri) { ... }
  
  protected void a(List paramList) { ... }
  </code></pre>
  
  <p>Also some loops look a bit weird. I don't write infinite loops:</p>
  
  <pre><code>while (true) {
       if (!localIterator.hasNext())
          return localArrayList;
       ProviderInfo[] arrayOfProviderInfo = ((PackageInfo)localIterator.next()).providers;
       if (arrayOfProviderInfo == null)
          continue;
       int i = arrayOfProviderInfo.length;
  }
  </code></pre>
  
  <p>Is it possible to re-map the obfuscated code to my original source code using any of ProGuard's .txt files? I would like to see my own variable names / method signatures.<br>
  Or can these files only be used to follow crash report stack traces?</p>