android,为什么库模块的 minifyEnabled false

lan*_*nyf 1 android proguard

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

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

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

如果应用程序默认启用 R8,应用程序将进行收缩/混淆,包括依赖的库?

小智 6

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

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

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