Bootstrap

解决Gradle Sync报错 Plugin [id: ‘com.android.application‘, version: ‘8.5.1‘] was not found

背景

Android Studio新建项目后,Gradle Sync报错如下,总之就是环境配置和版本问题。

先说结论吧,不是AGP版本的问题,而是Maven仓库找不到。

总报错信息:

FAILURE: Build failed with an exception.

* Where:
Build file 'E:\Workspace\AndroidTestDemo\build.gradle' line: 8

* What went wrong:
Plugin [id: 'com.android.application', version: '8.5.1'] was not found in any of the following sources:

- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Included Builds (No included builds contain this plugin)
- Plugin Repositories (could not resolve plugin artifact 'com.android.application:com.android.application.gradle.plugin:8.5.1')
  Searched in the following repositories:
    Google
    MavenRepo
    Gradle Central Plugin Repository

check build.gradle error:

Plugin [id: 'com.android.application', version: '8.5.1', apply: false] was not found in any of the following sources:

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

- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Included Builds (No included builds contain this plugin)
- Plugin Repositories (could not resolve plugin artifact 'com.android.application:com.android.application.gradle.plugin:8.5.1')
  Searched in the following repositories:
    Google
    MavenRepo
    Gradle Central Plugin Repository

    at org.gradle.plugin.use.resolve.internal.PluginResolutionResult.getFound(PluginResolutionResult.java:112)
    at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.resolvePluginRequest(DefaultPluginRequestApplicator.java:192)

新建minSDK为 Android 14.0的时候,项目目录结构如下:

  • app
    • src
      • androidTest 安卓测试
        • java
          • com.demo.test 共包名
            • ExampleInstrumentedTest.java 通常使用 Espresso、UI Automator 等测试框架来进行 UI 测试。
      • main 应用源代码
        • java
          • com.demo.test 共包名
        • res
        • AndroidManifest.xml
      • test 单元测试
        • java
          • com.demo.test 共包名
            • ExampleUnitTest.java 通常使用 JUnit 框架来编写和运行测试
    • build.gradle 单应用使用
  • gradle
    • wrapper
      • gradle-wrapper.jar
      • gradle-wrapper.properties 可配置本地路径distributionUrl
    • libs.versions.toml(以前没有)
  • build.gradle 项目用
  • local.properties sdk.dir配置
  • settings.gradle (包含下面属性项配置)
    • pluginManagement
    • dependencyResolutionManagement
    • rootProject.name
项目目录结构
项目目录结构

Note:因为没有sync成功,才会显示背景黄色的行。

问题分析

尝试找到8.5.1的来源,但是没有找到项目配置8.5.1指定版本的文件,打开Settings看是默认的AGP。

$versions.agp

Files -> Project Structure
Files -> Project Structure

打算手动在build.gradle配置8.4.0(本地其他project可用的)还是不行,说明没有生效。其实根因也不是插件版本问题,而是仓库找不到(解决方案第二点)。

其实8.5.1是在Gradle 新增的文件 libs.versions.toml 中,即$versions.agp的引用来源就是该文件的版本。

【笔记】Android Gradle Plugin配置文件相关说明-libs.versions.toml-CSDN博客介绍Gradle 7 之后新增文件libs.versions.toml的属性参数https://blog.csdn.net/qq_38666896/article/details/140661116

gradle 版本变化记录

在老版本的项目创建时,配置都集中在build.gradle,包含项目以及各app的build.gradle文件(此文件可以有多个,当然也可以只有一个)。

旧APP Project 的 build.gradle 配置参考:

buildscript {
    repositories {}
    dependencies {
        classpath 'com.android.tools.build:gradle:8.4.0'    // 指定版本
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.9.2'
    }
}

allprojects {
    repositories {}
}

apply plugin: 'com.android.application'

新建项目选择minSDK版本为 Android U 的项目时,repositories等大量配置是在settings.gradle中的

查看本地默认Gradle Verison

一般在C:\Users\XXXXX\.gradle,也可以系统变量指定 GRADLE_HOME和 GRADLE_USER_HOME

gradle-wrapper.properties

默认配置如下:

#Wed Nov 20 11:02:28 CST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

此处会引用GRADLE_USER_HOME,该值跟Android Studio设置中的 Gradle user home 似乎还是有区别的。

Gradle General Settings
Gradle General Settings

参考:

IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别_grade user home-CSDN博客

排查建议

1. Gradle 插件版本正确性

首先确保指定的插件版本是正确的。查看 Android Gradle 插件官方文档 确认 8.5.1 是否为可用版本。

  • 可以在 Android Studio 的 File > Project Structure > Project 菜单中指定插件版本,也可以在顶级 build.gradle.kts 文件中指定。
  • 如果指定的插件版本尚未下载,则 Gradle 会在下次构建项目时进行下载;或者也可以在 Android Studio 菜单栏中依次点击 File > Sync Project with Gradle Files 进行下载。

2. 插件仓库是否包含

确保在 build.gradle 文件中包含了正确的 repositories 配置,保证 Gradle 能够访问到 Google Maven 仓库通常在项目的 build.gradle 文件(在根目录下)中应该有类似如下的配置:

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.5.1'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

3. Gradle 包含问题

如果使用较旧的 Gradle 版本,可能不支持较新的 Android Gradle 插件。在 gradle/wrapper/gradle-wrapper.properties 文件中,确保 Gradle 版本符合要求。例如,Android Gradle 插件 8.5.1 需要 Gradle 8.0 或更高版本。可以按以下方式更新:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip

可以将上面的url修改成本地路径 

4. 网络连接问题

确保开发环境可以访问网络,以便 Gradle 能够在线下载所需的插件。如果处在某个需要 VPN 代理才能访问外部网络的环境,要确保已正确配置。

比如在公司经常有网络限制,导致连接问题下载失败。

5. IDE 问题

如果使用 Android Studio,可以尝试重启 IDE,有时候 IDE 可能没有正确加载 Gradle 插件。也可以尝试使 Gradle 重新同步,通常可以通过点击 “Sync Now” 提示来实现。

解决方案:替换镜像

修改 settings.gradle 文件的 repositories 配置。

修改前默认只有 google 和 mavenCentral。

pluginManagement {
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.name = "AndroidTestDemo"
include ':app'

 打开sync界面查看Download info可以看到仓库下载失败

修改后替换成阿里云镜像(或者公司内部镜像)

在pluginManagement 和dependencyResolutionManagement 的repositories中首先添加如下配置:

        maven { url=uri( "https://maven.aliyun.com/repository/central") }
        maven { url=uri( "https://maven.aliyun.com/repository/public") }
        maven { url=uri( "https://maven.aliyun.com/repository/google") }
        maven { url=uri( "https://maven.aliyun.com/repository/gradle-plugin") }

成功之后正常显示目录:

sync正常的项目目录
sync正常的项目目录

 需要注意,不要修改默认的build.gradle 如下配置为true,否则sync 失败。

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
alias(libs.plugins.android.application) apply false
}

参考资料

之前同类记录:报错分析 Plugin [id: ‘com.android.application‘, version: ‘8.5.0-alpha08‘, apply: false] was not found_plugin [id: 'com.android.application', version: '8-CSDN博客文章浏览阅读2.8k次,点赞10次,收藏28次。1、IDE软件版本:Android Studio Koala | 2024.1.1 Canary 8Cores: 16Registry:2、问题:新建项目后,没有任何修改,但是gradle sync报错,直接问题是gradle插件版本问题。前提:因为默认的maven加载太慢,就配置了阿里云镜像,然后报错了。_plugin [id: 'com.android.application', version: '8.5.0', apply: false] was nhttps://blog.csdn.net/qq_38666896/article/details/140658931

【问题解决】Android Studio Jellyfish新建Kotlin项目后Gradle Sync及Maven下载很慢-CSDN博客文章浏览阅读1.8k次,点赞15次,收藏19次。创建新项目之后,Gradle Sync和Build都很慢,因为下载Gradle和Maven等工具,需要修改gradle文件。_android studio jellyfishhttps://blog.csdn.net/qq_38666896/article/details/139185513

;