无法转换 moshi-1.13.0.jar(任务失败 biometric_storage:kaptGenerateStubsDebugKotlin)

Failed to transform moshi-1.13.0.jar (failed for task biometric_storage:kaptGenerateStubsDebugKotlin)

我从 Git 中提取了一个团队的项目,该项目是在 Flutter 中制作的,并且出于某种原因在构建应用程序时(按 Android Studio 中的绿色箭头和 运行 main.dart) 我收到以下消息:

What went wrong:
Execution failed for task ':biometric_storage:kaptGenerateStubsDebugKotlin'.
> Could not resolve all files for configuration ':biometric_storage:kapt'.
   > Failed to transform moshi-1.13.0.jar (com.squareup.moshi:moshi:1.13.0) to match attributes {artifactType=processed-jar, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.jvm.environment=standard-jvm, org.gradle.jvm.version=8, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime, org.jetbrains.kotlin.platform.type=jvm}.
      > Execution failed for JetifyTransform: C:\Users\UserName\.gradle\caches\modules-2\files-2.1\com.squareup.moshi\moshi.13.0\da685586facab9eb5c4fb630ce248be14e7da21b\moshi-1.13.0.jar.
         > Failed to transform 'C:\Users\UserName\.gradle\caches\modules-2\files-2.1\com.squareup.moshi\moshi.13.0\da685586facab9eb5c4fb630ce248be14e7da21b\moshi-1.13.0.jar' using Jetifier. Reason: Unsupported class file major version 60. (Run with --stacktrace for more details.)

我的build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.0'
        classpath 'com.google.gms:google-services:4.3.5'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

ext.kotlin_version = '1.4.31'

我的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

其他可能相关的信息

Fluter Android Studio plugin 63.2.1
Dart Android Studio plugin 203.8452
Dart 2.15.1
Flutter 2.8.1

我的团队中没有人收到此消息,所以我怀疑它与某些本地配置差异有关,或者我的某些程序版本不同。此外,我无法更新 Gradle,因为这会导致其他一些问题。 编辑:清除我所有队友的缓存后,出现此错误。

注意:我就是问这个问题的人。以下解决方案是独立的,您可以只尝试其中一个,也可以组合使用。选择一个看起来更简单的,如果可行,就不需要其他的了。

解决方案 1

尝试忽略导致问题的那个 .jar。根据您使用的 Android Gradle 插件版本使用 android.jetifier.blacklistandroid.jetifier.ignorelist ()(要检查您使用的是哪个版本,请访问您的 build.gradle 并检查 com.android.tools.build:gradle:X.Y.Z )。如果您在 7.0.0 之前使用任何东西,请使用 android.jetifier.blacklist,在使用 android.jetifier.ignorelist.

之后

我使用 3.6.0,所以对我来说 android.jetifier.blacklist 可以,而 android.jetifier.ignorelist 不可以。

解决方案 2

尝试将 gradle 和 android gradle 插件更新到版本 7。我没有尝试这个,我也不能,因为这不是我的个人项目,但如果你可以去争取。为什么我认为升级会有帮助?好吧 this github issue 谈到那个。

解决方案 3

以下解决方案没有任何意义(至少对我来说,如果有人可以解释为什么这可以解决问题,请这样做),但由于某些奇怪的原因它有效。

我添加了一个名为 bye-bye-jetifier 的新库,因为我的想法是我应该关闭 jetifier。在关闭它之前,我必须检查我是否有任何使用过时代码的依赖项(不是 AndroidX 的代码)因此我决定安装 bye-byte-jetifier。安装后我的 build.gradle 看起来像这样。在 运行 以下配置之后问题消失了。

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()   // <--------- I added this
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.0'
        classpath 'com.google.gms:google-services:4.3.5'
        classpath 'com.dipien:bye-bye-jetifier:1.2.1' // <--------- I added this
    }
}
allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

ext.kotlin_version = '1.4.31'

请注意,我什至没有应用该插件(如 bye-bye-jetifier 上的官方指南所说),这使得该解决方案更加混乱。

文件:“gradle.properties”(项目属性) 在下面添加行 android.jetifier.blacklist = com.squareup.moshi