R8:无法通过约束约束类型:@Nullable androidx.transition.ViewGroupUtilsApi14 {} 对于值:v3:INT

Gur*_*Rao 6 android gradle android-studio android-gradle-plugin

当我尝试创建 Android 应用程序的发布版本时,我收到错误R8: Cannot constrain type: @Nullable androidx.transition.ViewGroupUtilsApi14 {} for value: v3 by constrain: INT ,并且此错误是由 Android R8 引起的。失败的任务是:app:transformClassesAndResourcesWithR8ForRelease并且错误消息未提供足够的信息。下面是我完整的 gradle 配置。

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'

android {
    lintOptions{
        checkReleaseBuilds false
        abortOnError false
    }
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    dexOptions {
        javaMaxHeapSize "4G"
    }
    defaultConfig {
        applicationId "com.sample.app"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        ndk {
            moduleName "Lame"
            ldLibs "log"
        }
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        android {
            compileOptions {
                sourceCompatibility JavaVersion.VERSION_1_8
                targetCompatibility JavaVersion.VERSION_1_8
            }
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar, *.so'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.firebase:firebase-auth:19.1.0'
    implementation 'com.google.firebase:firebase-storage:19.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.firebase:firebase-database:19.1.0'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.annotation:annotation:1.1.0'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.google.android.gms:play-services-location:17.0.0'
    implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'com.squareup.picasso:picasso:2.5.0'
}
Run Code Online (Sandbox Code Playgroud)

如果我禁用minifyEnabled属性,那么 apk 就会成功生成。由于 R8 是 Android 的新功能,我只是想将其包含在内以混淆和缩减资源。我怎样才能找到这个问题的根本原因?以前有人遇到过这个问题吗?

此外,java.lang.NegativeArraySizeException当我运行gradlew app:transformClassesAndResourcesWithR8ForRelease --stacktrace命令时我也会得到。以下是上述命令的完整堆栈跟踪。

  • 例外是:org.gradle.api.tasks.TaskExecutionException:任务“:app:transformClassesAndResourcesWithR8ForRelease”执行失败。在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:151) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:148) 在 org .gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:141) 在 org.gradle.api.internal.tasks .execution.ResolveBeforeExecutionStateTaskExecuter.execute(ResolveBeforeExecutionStateTaskExecuter.java:75) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter .execute(SkipEmptySourceFilesTaskExecuter.java:108) 在 org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67) 在 org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTa sk执行器.java:46) 在 org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94) 在 org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46 )在 org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95) 在 org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) 在 org. gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) 在 org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) 在 org.gradle.api。 org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:73) 在 org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) 在 org.gradle.api.internal。 org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) 在 org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute 处的tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49) (DefaultBuildOperationExecutor.java:406) 在 org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) 在 org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) 在 org.gradle .internal.operations.DefaultBuildOperationExecutor。