title: Is ProGuard or JNI capable of protecting assets stored in Android apk file?
body: <p>I've tried to package the apk with encrypted assets(image, text, etc.).<br>
  When it's run on Android the assets will be decrypted and then displayed (of course I hard-coded the decryption key in the source code).<br>
  I guess: as long as the <strong>source code</strong> is protected, then the <strong>decryption key</strong> will also be protected, which means the <strong>assets</strong> is finally protected?  </p>
  
  <p>Questions:<br>
  1. If <strong>ProGuard</strong> is used to obfuscate the apk, is the decryption key <strong>safe</strong>?<br>
  2. If I code the decryption key in <strong>JNI(C++)</strong> and let JNI do the decryption, is the decryption key <strong>safer</strong>?  </p>
  
  <p>I've also made 2 demo Android apps with encrypted assets that you can try hacking.<br>
  The first one uses <strong>obfuscated Java</strong> to decrypt the assets with AES key (hard-coded in Java):<br>
  <a href="https://drive.google.com/file/d/0B9O3ChlSQJL1dVZUZmFtWlRyMXc/edit?usp=sharing" rel="nofollow">https://drive.google.com/file/d/0B9O3ChlSQJL1dVZUZmFtWlRyMXc/edit?usp=sharing</a>  </p>
  
  <p>The second one uses <strong>JNI</strong> to decrypt the assets with AES key (hard-coded in JNI):<br>
  <a href="https://drive.google.com/file/d/0B9O3ChlSQJL1UWU0VlprcXdVUjg/edit?usp=sharing" rel="nofollow">https://drive.google.com/file/d/0B9O3ChlSQJL1UWU0VlprcXdVUjg/edit?usp=sharing</a>  </p>
  
  <p><strong>If you are able to get the original assets in the first demo, please let me know.</strong><br>
  <strong>If you are able to get the original assets in the second demo, please also let me know.</strong><br>
  Any suggestions about better solutions for assets protection are appreciated!  </p>