首页 > 解决方案 > android,为什么库模块带有 minifyEnabled false

问题描述

有一个使用一些库的应用程序。看到lib有

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

并且proguard-rules.pro有一些规则来保留一些课程。

我相信是因为 R8 默认情况下是用于收缩/混淆的,并且minifyEnabled false会禁用它。如果这是真的,这是否意味着 lib 的 aar 将在没有收缩/混淆的情况下构建?

如果应用程序默认打开 R8,应用程序是否会进行收缩/混淆,包括依赖的库?

标签: androidproguardr8-obfuscation

解决方案


对于库项目,minifyEnabled false意味着最终的 AAR 将不会被 R8 处理,即不会执行代码优化或死代码删除。

如果一个应用程序项目有minifyEnabled true,R8 将处理应用程序代码、所有外部(Maven)库和本地库项目,它会使用应用程序中指定的规则来执行此操作。

作为一般规则,R8 仅在生成最终二进制文件(AAR 或 APK 或应用程序包)时运行,并且是否启用它在生成该工件的项目(库或应用程序项目)中指定。


推荐阅读