随着Android的发展,各种技术涌现出来,各种方案层出不穷,在Android OS这个平台上真是出现了非常多的新技术,时刻关注技术市场的变化,才能让我们跟上市场的脚步。作为应用开发商,前端最重要的就是那个apk了,自己所有的实现都在这个文件当中,所以为了保护自己的知识产权,也相应的出现了各种混淆方案,有代码混淆,有资源混淆,今天我们就来实现一个简单的资源混淆的例子,并大概分析一下资源混淆的实现原理。
在开始分析之前,我们需要了解一下apk中的资源是个什么东西,它是如何构成的,我们可以随便打包一个apk,然后将它后缀名改为.rar,用解压程序将它打开,大概结果如下图:
这是一个我自己打包的demo,非常简单,我们在项目中使用到的资源文件最后都打包成为一个resources.arsc文件,那么我们今天要来处理的,就是这个resources.arsc文件了,先通过一张图来认识一下resources.arsc文件的构成:
自己完整的实现已完成,代码下载地址如下:
当然这个方案其实也是别人已经实现好的,自己只不过拿来用而已,原文如下:
我们本例中的实现非常简单,主类为ProguardMain,根据我们自己的需要构造一个InputParam参数,然后直接调用Main.gradleRun(inputParam)就完成了。