在Android的build.gradle中,proguard-android-optimize.txt和proguard-android.txt有什么区别?

38
我正在阅读有关使用build.gradle为Android应用程序进行缩小、混淆和优化的文档。在文档的一个部分中,proguard-android.txt 作为默认的ProGuard文件被使用:
android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

在另一个部分中,使用了proguard-android-optimize.txt

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

似乎没有解释这些之间的区别,我找不到任何信息。能否有人解释一下它们的区别以及何时使用proguard-android-optimize.txtproguard-android.txt?谢谢 :)
1个回答

29

请看这里的Android源代码:here

优化:如果您不想进行优化,请改用proguard-android.txt配置文件,而不是本文件,该文件关闭了优化标志。添加优化会引入某些风险,例如ProGuard执行的并非所有优化都适用于Dalvik的所有版本。以下标志关闭已知存在问题的各种优化,但列表可能不完整或不及时。(如果仅针对Android 2.0或更高版本,则可以使用“算术”优化。)如果您选择这条路,请务必进行彻底的测试。

此外,这个回答也很有价值。


3
如果您使用R8,我认为优化文件没有效果对吧?阅读 https://developer.android.com/studio/build/shrink-code#optimization R8忽略任何ProGuard规则,试图修改默认优化(例如-optimizations和-optimizationpasses) - Ersen Osman
@ErsenOsman 正确,虽然有不同的方式来优化 R8。例如:https://developer.android.com/studio/build/shrink-code#full-mode 和 https://jakewharton.com/blog/ 上有一些关于 R8 优化的文章。 - Raimo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接