为什么minifyEnabled在发布版本中默认为false?

问题描述 投票:0回答:2

在build.gradle(应用程序)文件中,默认情况下具有此名称,

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

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

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

[我知道使用minifyEnabled true会延长编译时间,但是通常将调试版本用于开发和测试,无论如何它都不会受到影响。

我正在寻找的是,在运行时使用minifyEnabled true会带来什么不利条件(例如性能影响)。我不担心发布版本的构建时间。

Google Play控制台也建议我们启用它,因此我想知道为什么默认情况下minifyEnabled被禁用。

android gradle proguard obfuscation android-r8
2个回答
2
投票

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

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


1
投票

正如NIKHIL AGGARWAL所说,将minifyEnabled设置为true可能会导致运行时崩溃。

您应该研究每个使用过的库,以便将其ProGuard规则包括到您的项目中。同样,有时在Gradle或库升级后,您应该再次检查ProGuard规则,并相应地在项目中更新它们。

您应该将网络模型的数据类添加到ProGuard。

您应该在具有不同Android版本的多个设备/仿真器上检查release构建,以了解它可能在哪里崩溃。在release构建中进行调试非常困难,并且由于混淆而成为噩梦。

但是在将minifyEnabled设置为true并避免崩溃后,您将减小apk大小并阻止破解尝试。

© www.soinside.com 2019 - 2024. All rights reserved.