Proguard is the nice way to obfuscate your Android application to prevent reverse engineering. Here is Google tutorial for this http://developer.android.com/guide/developing/tools/proguard.html.

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 com.google.ads.** {
        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: http://bimbim.in/post/2010/09/24/Reason-of-Conversion-to-dalvik-format-failed-with-error-1.aspx

  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:)

enjoy

//DL