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

Per*_*122 4 gradle android-studio moshi flutter android-jetifier

我从 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\1.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\1.13.0\da685586facab9eb5c4fb630ce248be14e7da21b\moshi-1.13.0.jar' using Jetifier. Reason: Unsupported class file major version 60. (Run with --stacktrace for more details.)
Run Code Online (Sandbox Code Playgroud)

我的构建.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'
Run Code Online (Sandbox Code Playgroud)

我的 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
Run Code Online (Sandbox Code Playgroud)

其他可能相关的信息

Fluter Android Studio plugin 63.2.1
Dart Android Studio plugin 203.8452
Dart 2.15.1
Flutter 2.8.1
Run Code Online (Sandbox Code Playgroud)

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

Per*_*122 11

注:我是问这个问题的人。以下解决方案是独立的,您可以仅尝试其中一种,也可以将它们组合起来。选择看起来更简单的一个,如果有效,那么就不需要其他的了。

解决方案1

尝试忽略导致问题的那个 .jar。您可以通过编辑文件“gradle.properties”来完成此操作。根据您使用的 Android Gradle 插件版本添加android.jetifier.blacklistandroid.jetifier.ignorelist相关问题的链接com.android.tools.build:gradle:X.Y.Z)(要检查您使用的版本,请转到 build.gradle 并检查)。如果您在 7.0.0 之前android.jetifier.blacklist和之后使用过任何内容android.jetifier.ignorelist

我使用 3.6.0,所以对我来说android.jetifier.blacklist有效,但android.jetifier.ignorelist无效。

解决方案2

尝试将 gradle 和 android gradle 插件更新到版本 7。我没有尝试这个,我也不能这样做,因为这不是我的个人项目,但如果你可以的话。为什么我认为升级会有帮助?这个 github 问题讨论了这个问题。

解决方案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'

Run Code Online (Sandbox Code Playgroud)

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

  • android.jetifier.blacklist = com.squareup.moshi - 为我工作。 (2认同)

Đứ*_*ông 8

文件:“gradle.properties”(项目属性)在下面添加行

android.jetifier.blacklist = com.squareup.moshi
Run Code Online (Sandbox Code Playgroud)