资源混淆简单来说希望实现将res/drawable/icon,png转换res/drawable/a.png,或者我们甚至可以将文件路径也同时混淆,改成r/s/a.png。
Proguard->Resource Proguard
R.string.name->R.string.a
Res/drawable/icon->res/drawable/a/r/s/a
我们可以采用以下几种方案:
1.最简单的方法,我们按照Proguard的做法,直接在源码级别修改将代码以及xml的R.string.name中替换到R.string.a,icon.png重命名为a.png然后再交给Android编译。
2.根据Android的编译流程,所有资源ID已经被编译成32位int值。这说明我们并不需要去修改xml与java,因为在编译过程中已经被R.java所替换,我们直接修改resource.arsc的二进制数据,不改变打包流程,只要在生成resource.arsc之后修改它,同时重命名资源文件。
3.虽然方案二看起来不错,但是它依然依赖了编译流程,不利于使用。其实我们可以做到直接处理安装包,不依赖源码,不依赖编译过程,仅仅输入一个安装包,得到一个混淆包。