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

33
自从Android Studio 3.5更新以来,在构建我的应用程序时出现了以下警告:

DSL元素"useProguard"已经过时并将很快被移除。使用gradle.properties中的"android.enableR8"在R8和Proguard之间进行切换。

4个回答

74

build.gradle 中删除"useProguard" 对我解决了这个问题,像这样:

build.gradle 中删除"useProguard"

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

2022更新,或细节;R8现在是:

  • 默认启用,
  • 它只是简单地替换了ProGuard

    但支持现有的.pro文件(不需要重新配置)。

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

    但是,调试版本可以设置debuggable true,并继续逐行进行调试。


如果将 enableR8 设置为 true,但 minifyEnabled 设置为 false,是否会发生任何混淆? - Shrimantee Roy
如果您使用的是Gradle 7.0.0或更高版本,则注释掉(删除)useProguard必须的 - kc_dev

8

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

android.enableR8=true

R8还有一个完整模式,该模式与Proguard不直接兼容。为了尝试该模式,您还可以在gradle.properties文件中额外设置以下内容:

android.enableR8.fullMode=true

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


3
不再需要:'android.enableR8'选项已经被弃用。 它在Android Gradle插件的7.0版本中被移除。 请从'gradle.properties'文件中删除它。 - VIN

3
一目了然,如果您使用 Android Gradle插件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 文件中设置以下内容。

android.enableR8.fullMode=true

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

应用程序在启用android.enableR8.fullMode=true时崩溃 ->原因:java.lang.UnsupportedOperationException: 抽象类无法实例化!类名:e.c.a.l.k0 ->原因:java.lang.RuntimeException: 无法调用e.c.a.l.k0类的无参构造函数。为此类型注册一个InstanceCreator可能会解决此问题。 使用Android Studio 4.0 - Girish

0

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

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

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