首页 > 解决方案 > 为什么 minifyEnabled 在默认情况下在发布版本中为 false?

问题描述

在 build.gradle (app) 文件中我们默认有这个,

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

根据https://developer.android.com/studio/build/shrink-code

minifyEnabled true使代码更安全(使其难以进行逆向工程)并缩小发布版本的大小,我们用于发布应用程序。

我知道 usingminifyEnabled true会使编译时间更长,但通常调试版本用于开发和测试,无论如何都不受影响。

我正在寻找的是,minifyEnabled true在运行时使用会导致哪些缺点(例如性能影响)。我不担心发布版本的构建时间。

Google Play Console 也建议我们启用它,因此我想知道为什么minifyEnabled默认禁用它。

标签: androidgradleproguardobfuscationandroid-r8

解决方案


通过在发布版本中添加 minifyEnabled true ,您可以混淆代码,但在发布版本中默认设置为 false ,因为如果设置为 true ,则需要编写 proguard 规则来告诉编译器在混淆代码时要忽略哪些类。如果 minifyEnabled 默认设置为 true 并且开发人员忘记添加 proguard 规则,则可能导致运行时崩溃。

但是,将 minifyEnabled 设置为 true 并将 shrinkResources 设置为 true 可以减小您的 apk 大小。


推荐阅读