为什么我收到 AbstractDynamicObject$CustomMessageMissingMethodException 错误?

Cod*_*hap 50 android gradle firebase

我刚刚开始了一个新项目,正在尝试连接到 Firebase。

一旦我尝试构建我的项目,我就会收到错误消息:

无法解析 Android 应用程序模块的 Gradle 配置

所以我查看了我的构建,它告诉我 jCenter() 已被弃用,我应该删除它。当我删除它时,一切正常。但是,当我尝试连接到 Firebase 时出现错误:

AbstractDynamicObject$CustomMessageMissingMethodException。

什么可能导致这种情况?

完整的堆栈跟踪:

    Caused by: java.lang.RuntimeException: com.android.build.gradle.internal.crash.ExternalApiUsageException: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method setVariantDir() for arguments [debug] on task ':app:processDebugGoogleServices' of type com.google.gms.googleservices.GoogleServicesTask.
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:71)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:54)
    at com.android.build.gradle.internal.profile.AnalyticsResourceManager.recordBlockAtConfiguration(AnalyticsResourceManager.kt:206)
    at com.android.build.gradle.internal.profile.AnalyticsConfiguratorService.recordBlock(AnalyticsConfiguratorService.kt:85)
    at com.android.build.gradle.internal.plugins.BasePlugin.lambda$createTasks$9(BasePlugin.java:582)
    at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt:37)
    at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt)
Run Code Online (Sandbox Code Playgroud)

RRi*_*VEN 114

我来这里是因为我遇到了同样的错误。幸运的是,当它发生时我正在更新依赖项并将其缩小到:

classpath 'com.google.gms:google-services:4.3.6'
Run Code Online (Sandbox Code Playgroud)

将其更改为

classpath 'com.google.gms:google-services:4.3.5'
Run Code Online (Sandbox Code Playgroud)

错误对我来说消失了。希望你也一样

这是有关我的依赖项的更多信息。

运行 Android Studio 4.2 build 2021 年 4 月 28 日

repositories {
        google()
        mavenCentral()
        maven { url 'https://plugins.gradle.org/m2/'}
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.0'
        classpath 'com.google.gms:google-services:4.3.5'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.6.0'
        classpath 'com.google.firebase:perf-plugin:1.4.0'
Run Code Online (Sandbox Code Playgroud)

Gradle 插件 4.2.0 Gradle 7.0.1

//Firebase
    implementation 'com.google.firebase:firebase-ads:20.1.0'
    implementation 'com.google.firebase:firebase-core:19.0.0'
    implementation 'com.google.firebase:firebase-crash:16.2.1'
    implementation 'com.google.firebase:firebase-messaging:22.0.0'
    implementation 'com.firebase:firebase-jobdispatcher:0.8.5'
    implementation 'com.google.firebase:firebase-auth:21.0.0'
    implementation 'com.google.firebase:firebase-firestore:23.0.0'
Run Code Online (Sandbox Code Playgroud)

  • 您可以在这里关注该问题:https://github.com/google/play-services-plugins/issues/176 (6认同)

Kab*_*uda 15

更新: Google 刚刚修复了版本中的问题4.3.8 发行说明

适用于 Android 的 google-services 插件的更新版本 (v4.3.8) 现在可用。有关更多信息,请参阅Firebase Android SDK 发行说明


错误来自类路径 'com.google.gms:google-services:4.3.6'

最简单的解决方案:

返回版本 4.3.5

dependencies {
        classpath 'com.google.gms:google-services:4.3.5'
}
Run Code Online (Sandbox Code Playgroud)

代替 4.3.6

dependencies {
        classpath 'com.google.gms:google-services:4.3.6'
}
Run Code Online (Sandbox Code Playgroud)

事实上,版本4.3.6是造成这个错误的原因。最简单的方法是回到以前的版本,直到它被修复


Int*_*iya 6

引起:java.lang.RuntimeException: com.android.build.gradle.internal.crash.ExternalApiUsageException: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: 找不到方法 setVariantDir()

修正错误

您应该使用最新的可能版本。

dependencies {
       
        classpath 'com.google.gms:google-services:4.3.8' 

    }
Run Code Online (Sandbox Code Playgroud)