Mess库的分析

作用

用法

在project的build.gradle文件里加上:

dependencies {
   ...
   classpath 'me.ele:mess-plugin:version code'
}

在app模块的build.gradle文件里加上:

apply plugin: 'me.ele.mess'

同时,如果需要对某些文件,可以加上对用的ignore:

mess {
    ignoreProguard 'com.android.support:recyclerview-v7'
}

实现原理

它的核心思想就是去掉aapt_rules.txt里的keep,从而保证都被混淆。

1、hook transformClassesAndResourcesWithProguardFor${variant.name.capitalize()}

在这里完成gradle task的拦截,也是mess混淆的入口。

2、hook ProcessAndroidResources

这里只是清空掉aapt_rules.txt文件的内容(aapt_rules.txt保存的是需要keep住的对象)。这样才能保证文件可以被混淆掉。

3、处理依赖库的proguard.txt文件

这一步就是删除依赖库中所保护的内容,具体proguard.txt文件位于app目录下/build/intermediates/exploded-aar/依赖库maven名/proguard.txt。

Mess中直接将proguard.txt文件名最后加上~,如proguard.txt~,在linux中表示备份,以便之后文件的恢复。

4、

results matching ""

    No results matching ""