解决Gradle错误:未找到ID为'com.android.application'的插件

19,115 阅读4分钟

当在Android studio中构建你的Android应用程序时,可能会出现一个错误,说没有找到ID为'com.android.application'的插件

这个错误看起来如下:

* Exception is:
org.gradle.api.plugins.UnknownPluginException:
Plugin [id: 'com.android.application'] was not found
in any of the following sources:

UnknownPluginException 意味着Gradle无法找到成功构建你的应用程序所需的Android Gradle插件。

要解决这个错误,你需要检查三件事:

  • 检查谷歌Maven仓库是否列在你的settings.gradle 文件中
  • 检查Android Gradle插件是否被添加到项目build.gradle 文件中
  • 检查Android Gradle插件是否与你的Gradle版本兼容

让我们一起学习如何解决这个问题。

检查你的settings.gradle文件

Android Gradle插件是从Google的Maven仓库下载的。你需要确保仓库google() 在你的Android项目中列在pluginManagement

settings.gradle 文件是用来列出Gradle为你的Android项目下载依赖项的仓库的文件。

该文件的内容应该如下:

pluginManagement {
repositories {
gradlePluginPortal()
 google()
 mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
 google()
 mavenCentral()
}
}
rootProject.name = "KotlinApp"
include ':app'

如果你在settings.gradle 中只看到以下一行:

include ':app'

那么这意味着你的Android项目是在很久以前创建的。

你的安卓项目的资源库应该位于build.gradle 文件中,而不是。接下来让我们去那里。

检查你的build.gradle文件

一个Android应用项目有两个build.gradle 文件:

  • <project>/app/build.gradle 是针对 模块的特定配置app
  • <project>/build.gradle 是你当前Android项目的全局配置

<project>/build.gradle 文件应该包含对Android Gradle插件的依赖性和它的版本,如下图所示:

plugins {
 id 'com.android.application' version '7.1.2' apply false
 id 'com.android.library' version '7.1.2' apply false
id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}

确保你的build.gradle 文件与上面显示的文件相似。

对于较早的Android应用项目,build.gradle 文件还将包含如下所示的资源库列表:

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

如果你的内容与上面的类似,那么你需要用mavenCentral()google() 替换jcenter()

这是因为自2021年3月31日以来,JCenter版本库已成为只读。你仍然可以从该仓库下载模块,但那里不会有新版本发布。

此外,你需要将你的Android Gradle依赖性更新到最新版本,如下图所示:

buildscript {
repositories {
 google()
 mavenCentral()
 }
dependencies {
 classpath 'com.android.tools.build:gradle:7.1.2'
 }
}
allprojects {
repositories {
 google()
 mavenCentral()
 }
}
task clean(type: Delete) {
delete rootProject.buildDir
}

现在你的安卓Gradle插件版本和版本库列表都是最新的了。

最后要检查的是你的Android项目所使用的Gradle版本。

检查你的Gradle版本

每个使用Android Studio生成的Android项目都包含一个gradle-wrapper.properties 文件。

该文件位于gradle/wrapper/ 文件夹中,它定义了你的项目所使用的Gradle版本。

下面是一个关于gradle-wrapper.properties 文件内容的例子:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip

上面突出显示的distributionUrl 属性显示了你的Android项目使用的Gradle版本。

gradle-7.2-bin.zip 表示该项目使用的是Gradle版本 。7.2

你需要使用支持你的Android Gradle插件版本的Gradle版本

这里是Gradle和Android Gradle的兼容性列表。

更新Gradle表

由于你之前已经将Android Gradle更新到了版本7.1.2 ,所以你应该使用表中所说的Gradle版本7.2+

要更新你的Gradle版本,只需改变.zip 文件名中的版本:

gradle-7.0-bin.zip
gradle-7.2-bin.zip
gradle-7.3-bin.zip

请记住,你还需要检查Android Studio的版本,因为旧的Android Studio不支持最新的Android Gradle插件(链接):

一旦Gradle版本更新,再次构建你的Android应用程序。com.android.application 的问题现在应该已经解决了。

总结

现在你已经学会了如何解决在Android Studio中找不到com.android.application 的问题。

随着Android操作系统得到新的发布和增加新的功能,旧版本的Gradle和Android Gradle将变得过时。

当你把一个项目导入Android Studio时,第一次构建应该警告你Gradle构建过程中的任何不兼容性。

有时,你需要更新Gradle和Android Gradle的版本,才能成功构建项目。

在某些情况下,你可能会看到一个缺少Gradle文件的Android项目。为了解决这个问题,你可以尝试用Android Studio创建一个新项目。

当新项目构建成功后,将Gradle文件和gradle/ 文件夹复制到你的旧Android项目。

Copy these Gradle files

复制这些Gradle文件

之后,修改你的settings.gradle 文件中的rootProject.name 属性,以匹配旧项目。

我希望这个教程对你有用。🙏