升级 Android Gradle Plugin 7.1 后无法加载类 AndroidComponentsExtension

2023-12-20

我最近下载了Android Studio 大黄蜂 https://developer.android.com/studio/releases#bumblebee它询问我是否想要升级到 Android Gradle Plugin 7.1.0,该版本与 Android Studio Bumblebee 一起提供,这对我很有帮助。

升级后,我收到构建错误:

Unable to load class 'com.android.build.api.extension.AndroidComponentsExtension'.

This is an unexpected error. Please file a bug containing the idea.log file.

并看着idea.log文件,我看到:

A problem occurred evaluating project ':main'.
    at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:103)
    ...
Caused by: org.gradle.api.GradleScriptException: A problem occurred evaluating project ':main'.
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
    ...
Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
    at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:73)
    at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:42)
    ...
Caused by: java.lang.ClassNotFoundException: com.android.build.api.extension.AndroidComponentsExtension

这意味着我无法运行我的应用程序,我需要降级 AGP 7.0 才能再次正常工作。如何修复此问题并升级到 Android Gradle 插件 7.1.0?


更新导航安全参数

这些行是需要查看的重要行:

Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
    at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:73)
    at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:42)

这表明错误来自于导航安全参数插件 https://developer.android.com/guide/navigation/navigation-pass-data#Safe-args.

根据Android Gradle 插件 7.1.0 发行说明 https://developer.android.com/studio/releases/gradle-plugin#navigation_safe_args_compatibility:

Navigation Safe Args Gradle 插件依赖的 AGP API 已被删除。AGP 7.1 不适用于 Navigation Safe Args 版本 2.4.0-rc1 或 2.4.0,但适用于版本 2.5.0-alpha01 和 2.4.1。同时,作为一种解决方法,您可以将 AGP 7.1 与 Navigation Safe Args 的快照版本(Navigation 2.5.0-SNAPSHOT)结合使用。要使用快照构建,请按照快照指令 https://androidx.dev/构建 ID #8054565。

As 导航2.4.1 https://developer.android.com/jetpack/androidx/releases/navigation#2.4.1现已可用,您可以升级到该版本的导航来获得修复:

向后移植自导航2.5.0-alpha01 https://developer.android.com/jetpack/androidx/releases/navigation#2.5.0-alpha01:Safe Args 现在依赖于 Android Gradle 插件版本 7.0.4。这意味着 Navigation Safe Args 将不再与 7.0 之前的 Android Studio 版本兼容,但现在与 Android Gradle Plugin 7.1.0 及更高版本兼容。

dependencies {
    classpath 'com.android.tools.build:gradle:7.1.0'

    // Update this line to use 2.4.1
    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.1"
}

请注意,您应始终使用与 Safe Args 插件相同版本的导航库(即,您的应用程序还应使用 Navigation 2.4.1):您不应尝试将 Navigation 2.4.1+ Safe Args 插件与早期版本一起使用导航的版本(例如2.3.5)。

关于 Firebase Perf 插件的注意事项

请注意,当您使用以下命令时,您可能会看到同样的错误:

classpath "com.google.firebase:perf-plugin:1.4.0"

With an idea.log其中指出:

Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
    at com.google.firebase.perf.plugin.FirebasePerfClassVisitorFactory.registerForProject(FirebasePerfClassVisitorFactory.java:54)
    at com.google.firebase.perf.plugin.FirebasePerfPlugin.perform(FirebasePerfPlugin.java:145)
    at com.google.firebase.perf.plugin.FirebasePerfPlugin.lambda$apply$0(FirebasePerfPlugin.java:107)

根据Firebase Perf 插件 1.4.1 发行说明 https://firebase.google.com/support/release-notes/android#performance_gradle_plugin_v1-4-1:

迁移出已弃用的 Android Gradle 插件 API。

所以你应该升级到 1.4.1:

classpath "com.google.firebase:perf-plugin:1.4.1"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

升级 Android Gradle Plugin 7.1 后无法加载类 AndroidComponentsExtension 的相关文章

随机推荐