title: How to avoid reverse engineering of an APK file
body: <p>I am developing a <strong>payment processing app</strong> for Android, and I want to prevent a hacker from accessing any resources, assets or source code from the <a href="http://en.wikipedia.org/wiki/APK_%28file_format%29" rel="noreferrer">APK</a> file.</p>
  <p>If someone changes the .apk extension to .zip then they can unzip it and easily access all the app's resources and assets, and using <a href="http://code.google.com/p/dex2jar/wiki/Faq" rel="noreferrer">dex2jar</a> and a Java decompiler, they can also access the source code. It's very easy to reverse engineer an Android APK file - for more details see Stack Overflow question <em><a href="https://stackoverflow.com/questions/12732882/reverse-engineering-from-apk-to-project">Reverse engineering from an APK file to a project</a></em>.</p>
  <p>I have used the Proguard tool provided with the Android SDK. When I reverse engineer an APK file generated using a signed keystore and Proguard, I get obfuscated code.</p>
  <p>However, the names of Android components remain unchanged and some code, like key-values used in the app, remains unchanged. As per Proguard documentation the tool can't obfuscate components mentioned in the Manifest file.</p>
  <p>Now my questions are:</p>
  <ol>
  <li>How can I <strong>completely prevent</strong> reverse engineering of an Android APK? Is this possible?</li>
  <li>How can I protect all the app's resources, assets and source code so that hackers can't hack the APK file in any way?</li>
  <li><strong>Is there a way to make hacking more tough or even impossible?</strong> What more can I do to protect the source code in my APK file?</li>
  </ol>