Well actually we will never get 100% security on our code. But we can do some stuff to make the life of a potential malicious user a little bit more difficult:
Optimizing and obfuscating the code with ProGuard it this first step to take which works with byte code targeted at Android's Dalvik VM.
Also Proguard it's the suggested method by the official docs, and it ships along with the SDK Tools since Android 2.3
Integrated ProGuard support: ProGuard is now packaged with the SDK
Tools. Developers can now obfuscate their code as an integrated part
of a release build.
Suggested readings
Proguard, Android, and the Licensing Server
Securing Android LVL Applications