记录一个由 gradle 构建项目遇到的问题:
起因:项目原先运行正常,不过个人移动了工程的目录位置,导致出现以下错误
Gradle Core Plugins (plugin is not in 'org.gradle' namespace) - Plugin Repositories (could not resolve plugin artifact 'com.android.application:com.android.application.gradle.plugin:4.2.2') Searched in the following repositories: Gradle Central Plugin Repository
这是 build.gradle 文件的内容
buildscript {
repositories {
google() // Google Maven 仓库,用于 Android 插件和依赖
jcenter()
}
dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0"
}
}
plugins {
id 'com.android.application' version '4.2.2' apply false
id 'com.android.library' version '4.2.2' apply false
}
网上查询大多说是插件引用不对:
以下罗列出找到的2个方法(针对我的项目都无法解决,期望对查阅者有帮助),还有第三种,是摸索出来的,可解决(请各位对症下药)
第一种:修改插件引用形式
https://blog.triplez.cn/posts/err-and-solution-of-config-gradle-idea-env/
第二种:下载插件引用不到的情况
* What went wrong:
A problem occurred configuring root project 'sabmutiapp_new'.
> Could not resolve all files for configuration ':classpath'.
> Could not download jimfs.jar (com.google.jimfs:jimfs:1.1)
第三种是自己摸索出来的
首先问题出在尝试在 plugins
块中声明 Android 应用程序插件的方式上。Android 应用程序插件通常不需要在 plugins
块中明确声明版本和设置 apply: false
,而是应该在 buildscript
的 dependencies
中引入相应的 Gradle 插件依赖,并在顶层的 apply plugin
声明中使用。
以下是正确的做法:
-
在
buildscript
中声明依赖:在
buildscript
块中添加 Android 插件的依赖,如下所示:buildscript { repositories { google() // Google Maven 仓库,用于 Android 插件和依赖 jcenter() } dependencies { classpath 'com.android.tools.build:gradle:4.2.2' // Android 插件依赖 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' // 其他插件依赖 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0" } }
-
在顶层
apply plugin
中应用插件:在顶层(通常是
build.gradle
文件的开头)使用apply plugin
来应用 Android 应用程序插件,如下所示:apply plugin: 'com.android.application'
或者如果是库项目(library project),则应用
com.android.library
插件:apply plugin: 'com.android.library'
-
移除
plugins
块中的声明:确保在
plugins
块中不再声明 Android 插件,因为这种方式不适用于 Android 插件。 -
通过以上步骤,Gradle 将能够正确识别并使用你指定的 Android 插件版本来构建项目。记得在修改完
build.gradle
后,可以尝试执行./gradlew clean
清理缓存,然后重新构建项目。