无法从 R8 配置中删除“-ignorewarnings”(Android Proguard 问题)

Posted

技术标签:

【中文标题】无法从 R8 配置中删除“-ignorewarnings”(Android Proguard 问题)【英文标题】:Unable to remove "-ignorewarnings" from R8 Configuration (Android Proguard Issue) 【发布时间】:2020-10-16 18:39:31 【问题描述】:

我正在尝试构建一个启用了 proguard 和 r8 的 android 应用程序。我添加了“-printconfiguration full-r8-config.txt”来打印完整的 R8 配置。

问题:即使在之后。 build.gradle 中的依赖项为零,我在文件 full-r8-config.txt

的末尾得到以下条目
# The proguard configuration file for the following section is <unknown>
-ignorewarnings
# End of content from <unknown>

这意味着 proguard 在构建应用程序时忽略了警告。我想删除此条目,因为忽略警告可能很危险。无法在此条目中找出&lt;unknown&gt;

更多详情:

proguard-rules.pro

-printconfiguration full-r8-config.txt

App -> build.gradle

apply plugin: 'com.android.application'

android 
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig 
        applicationId "com.proguard.kotlintest2"
        minSdkVersion 19
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

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

        debug 
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        
    

项目 -> build.gradle

buildscript 
    ext.kotlin_version = "1.3.72"
    repositories 
        google()
        jcenter()
    
    dependencies 
        classpath "com.android.tools.build:gradle:4.0.0"
    


allprojects 
    repositories 
        google()
        jcenter()
    


task clean(type: Delete) 
    delete rootProject.buildDir

gradle.properties

org.gradle.jvmargs=-Xmx2048m

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

【问题讨论】:

【参考方案1】:

目前-ignorewarnings 选项是在使用 R8 时由 Android Gradle 插件强制执行的,无法禁用。

这样做的理由是许多现有的配置文件都非常广泛地使用-dontwarn,并且在警告方面没有与Proguard兼容的好方法。

【讨论】:

以上是关于无法从 R8 配置中删除“-ignorewarnings”(Android Proguard 问题)的主要内容,如果未能解决你的问题,请参考以下文章

Android R8 即时崩溃

使用 proguard / R8 删除数据类元数据

保留规则的 Proguard/R8 例外

R8 和 Proguard 规则

无法从配置文件中删除设备

R8 从 AndroidStudio 中抛出 NullPointerException,但不是从命令行通过 gradlew