Android开发除了部分功能采用C/C++编码之外,其余都是主要采用Java进行编码开发功能。Java应用很容易被反编译,Android也不例外。通过apktool等反编译工具就可以获取源代码。Google为了保护应用开发者的知识产权,为Androi提供了ProGuard混淆方案,以增加反编译后源码阅读的难度,但是对于一些技术能力强的Android开发工程师和反编译工程师来说,解读还原源码只是时间问题。
ProGuard是针对Java应用的保护,并不是针对Android应用的,Android虽然使用Java开发,但是毕竟不是跑在JVM上,所以安装包结构和普通的Java应用还是区别很大的。如果你对免费的ProGuard放心不下,可以考虑试一试付费的混淆方案DexDuard,除了拥有ProGuard的功能之外,还包含资源混淆,字符串加密和dex文件分割等。
虽然代码混淆是最为基础的保护措施,但是仍有不少应用是裸奔状态。