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

本教程将介绍升级Android Gradle插件7.1后无法加载类AndroidComponentsExtension的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

升级Android Gradle插件7.1后无法加载类AndroidComponentsExtension 教程 第1张

问题描述

我最近下载了Android Studio Bumblebee,它很有帮助地询问我是否想升级到Android Studio Bumblebee附带的Android Gradle插件7.1.0版本。

升级后,我收到生成错误:

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)

这表示错误来自Navigation Safe Args plugin。

根据Android Gradle Plugin 7.1.0 release notes:

导航安全参数Gradle插件所依赖的AGP API已删除。AGP 7.1不适用于导航安全参数版本2.4.0-RC1或2.4.0,但适用于版本2.5.0-alpha01和2.4.1。同时,作为一种解决办法,您可以将AGP 7.1与导航安全参数、导航2.5.0-快照的快照版本配合使用。若要使用快照生成,请遵循内部版本ID为#8054565的snapshot instructions。

由于Navigation 2.4.1现已可用,您可以升级到该版本的导航以获得修复:

回传自Navigation 2.5.0-alpha01:安全参数现在依赖于Android Gradle插件版本7.0.4。这意味着导航安全参数将不再与Android Studio 7.0之前的版本兼容,但现在与Android Gradle插件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"
}

请注意,您应始终使用与安全参数插件相同版本的导航库(即,您的应用程序也应使用导航2.4.1):您不应尝试将导航2.4.1+安全参数插件与较早版本的导航(如2.3.5)配合使用。

Firebase Perf插件说明

请注意,您在使用时可能会看到相同的错误:

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

具有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 Plugin 1.4.1 Release Notes:

已从不推荐使用的Android Gradle插件API迁移。

因此您应该升级到1.4.1:

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

好了关于升级Android Gradle插件7.1后无法加载类AndroidComponentsExtension的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。