Android代码混淆是什么

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_36176987/article/details/79119876


本文主要是介绍Android混淆是什么,有什么需要注意的地方,便于初学者较好的了解什么是“混淆”与使用时的注意事项。

1.由于Android项目是基于java语言的,而java属于高层抽象语言,易于反编译,其编译后的程序包包含了大量的源代码变量、函数名、数据结构等信息,根据其编译打包后的APK文件,可以非常容易的得到 近乎源代码质量 的反编译代码。如果不加混淆,相当于直接将源代码拱手送人,内容严密的app权限审核可以说是形同虚设。如果大家想避免自己的成果被别人夺取,然后重新修改策划而额外增加的工作量,那就尽量得自己的Android项目加上混淆吧。

也就是说,为了防止他人可以轻松的反编译出你的apk,需要给你的编译的APK加层“密码”,也就是所谓的“混淆”。

2.Android平台的混淆原理是把代码中原来有具体含义的包名,类名,变量名,方法名等名称全部替换成按顺序排列的无意义的英文字母a、b、c….这样代码结构没有变化,还可以运行得到一样的结果,并且就算代码被反编译出来,别人想弄懂代码的架构和具体意思也比较难。

所以当你混淆后运行app时,这个时候APK文件已经是被混淆过的,使用的类也是已经被混淆过的,编译时可能正确但是运行时会报错,所以一些必要的类需要手动去在混淆文件中标明不混淆。

3.不难理解,混淆之后,类名会变成a,b,c这种,通过包名+类名自然就会找不到该类了,自然就会出现ClassNotFoundException异常。当混淆时候报一些引用未找到的时候,有一些可以选择忽略不计,但有一部分必须使用到的类无法找到就是2中提到的原因,即使在混淆文件中选择了不去提示警告后,编译时程序不会报错,但是运行时程序还是会出问题。

所以一些类在混淆代码中需要特别标注出来,不可以混淆掉。


最后在这里给出一个大众版本的混淆的基本规则与模板  Android混淆模板(也可以自行查找,都差不多),网上有很多文章都是千篇一律

阅读更多
换一批

没有更多推荐了,返回首页