美文网首页
Android_多模块混淆混淆的正确姿势

Android_多模块混淆混淆的正确姿势

作者: 信仰年輕 | 来源:发表于2021-03-12 19:06 被阅读0次

    本文目标

    开启多模块混淆的正确姿势,一定能够混淆成功且不会出问题

    一.单工程混淆

        buildTypes {
            release {
                minifyEnabled true //开启混淆
                zipAlignEnabled true  //压缩优化
                shrinkResources true  //移出无用资源
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                signingConfig signingConfigs.config//签名文件release和debug保存一致,方便
            }
        }
    

    在app中开启minifyEnabled 为true就开启混淆了,然后需要到proguard-rules.pro文件编辑混淆规则,如果你的项目只有一个app module,那么这样配置混淆就可以了

    二.多模块如何混淆

    1.在app module中统一配置混淆规则
    我们可以直接在app module中build.gradle文件配置所有module需要混淆的规则。这样,其他module中就无需开启混淆。但是并不推荐使用这种方法,当我们取消依赖某些module的时候,这样很容易造成混淆规则冗余,我们还需要删除掉该module相关的混淆配置,很麻烦。

    2.各个module单独配置混淆规则(推荐)
    我们也可以单独为module配置混淆规则,比较推荐这种做法。每个module管理自己的混淆文件,当我们不依赖该module的时候,就不会发生第一种方法出现的问题了。
    我们把app module称作为主模块,其依赖的其他module称作为子模块
    经过我的多次实践得出,主模块的混淆开关配置会直接影响到子模块,也就是说如果你的主模块开启的混淆,就算你的子模块关闭混淆开关,最终子模块还是会被混淆的。其次
    子模块混淆文件的指定是通过consumerProguardFiles这个属性来指定的,并不是proguardFiles 属性,而且我们无需配置其他的选项,只需要配置consumerProguardFiles属性就可以。该属性表示在打包的时候会自动寻找该module下我们指定的混淆文件对代码进行混淆。

    三.总结

    一般来说,在组件化开发的情况下,app module的代码是很少的,依赖的第三方库也是很少的。我们可以把通用的混淆规则放到app module中。 这样子module就无需配置通用混淆规则,只需要配置一些该module所需要的混淆规则即可。大大减少了混淆代码。关于自己项目的实体类和依赖的第三方sdk需要自己添加混淆规则,一般开源库都会给出混淆规则,没有的话就要自己上gitHub官网去寻找了

    相关文章

      网友评论

          本文标题:Android_多模块混淆混淆的正确姿势

          本文链接:https://www.haomeiwen.com/subject/wiwzqltx.html