Gradle : DSL 元素 'useProguard' 已过时,将很快删除

Gradle : DSL element 'useProguard' is obsolete and will be removed soon

自从 Android Studio 3.5 更新后,我在构建我的应用程序时收到此警告:

DSL element 'useProguard' is obsolete and will be removed soon. Use 'android.enableR8' in gradle.properties to switch between R8 and Proguard..

build.gradle 中删除“useProguard”解决了我的问题,例如:

release {
            minifyEnabled true
            //useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

2022 年更新,或详细信息; R8 现在是:

  • 默认启用,
  • 它只是取代了ProGuard

    But supports existing .pro files (and there should be no need to reconfigure).

  • 此外,任何禁用 R8 或使用 ProGuard 的方法都已弃用(甚至删除)。

    But debug flavors can set debuggable true, and continue to be debuggable line-by-line.

在项目的 gradle.properties 文件中设置以下内容

android.enableR8=true

R8也有不直接兼容Proguard的full模式。为了尝试这一点,您可以在 gradle.properties 文件

中另外设置以下内容
android.enableR8.fullMode=true

这会启用更多优化,可以进一步减小应用大小。但是,您可能需要一些额外的保留规则才能使其正常工作。

乍一看,当您使用 Android Gradle plugin 3.4.0 或更高版本构建项目时,该插件不再使用 ProGuard 来执行编译时代码优化。相反,该插件默认与 R8 编译器配合使用,以处理压缩、混淆和优化您的应用程序。但是,您可以通过 ProGuard 规则文件禁用某些任务或自定义 R8 的行为。

事实上,R8 适用于所有现有的 ProGuard 规则文件,因此更新 Android Gradle 插件以使用 R8 不需要更改现有规则。

当您使用 Android Studio 3.4 或 Android Gradle 插件 3.4.0 及更高版本时,R8 是将项目的 Java 字节码转换为在 Android 平台上运行的 DEX 格式。但是,当您使用 Android Studio 创建新项目时,收缩、混淆和代码优化在默认情况下是不启用的。您可以使用以下代码启用它们 -

android {
    buildTypes {
        release {
            // Enables code shrinking, obfuscation, and optimization for only
            // your project's release build type.
            minifyEnabled true

            // Enables resource shrinking, which is performed by the
            // Android Gradle plugin.
            shrinkResources true

            // Includes the default ProGuard rules files that are packaged with
            // the Android Gradle plugin. To learn more, go to the section about
            // R8 configuration files.
            proguardFiles getDefaultProguardFile(
                    'proguard-android-optimize.txt'),
                    'proguard-rules.pro'
        }
    }
    ...
}

对于喜欢冒险的人,R8也有完整模式。为了尝试这一点,您可以在 gradle.properties 文件中另外设置以下内容。3

android.enableR8.fullMode=true

这会启用更多优化,可以进一步减小应用大小。但是,您可能需要一些额外的保留规则才能使其正常工作。在这里了解更多 - https://youtu.be/uQ_yK8kRCaA

R8 是 Android Studio 3.4 及更高版本中可用的默认工具。无需显式启用 R8。只需从 app/build.gradle 文件中删除 useProguard true 行。

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