Proguard is the nice way to obfuscate your Android application to prevent reverse engineering. Here is Google tutorial for this

But you can face some difficulties with it:

  1. To minimize risk of “class not found” exceptions – don’t obfuscate external libraries that you have in your project. Add -keep option to proguard.cfg
    -keep public class** {
        public protected *;
  2. If you are using reflection in your code – add these classes to the exclude list:
    -keepclassmembers class * {
        public static void buildUriMatcher(android.content.UriMatcher, java.lang.String);
  3. Stop using onClick listeners in xml resources!:) Or also add an exception:
    public void on*(android.view.View);
  4. In Eclipse you can easily get “conversion to dalvik format failed with error 1”:

    Don’t worry – don’t obfuscate external libraries + don’t use Eclipse for export signed application. Just create build.xml for Ant and all will be just perfect!

    Read more about this problem here:

  5. Try to reverse engineering your code with JD (as described here). You may need to remove some debug log String constants to make your code completely unreadable:)