Flutter下Android Gradle项目构建依赖解析失败报错寻求解决方案
报错信息翻译
> 配置根项目 'android' 时发生问题 > 无法解析配置 ':classpath' 的所有构件 > 无法解析 com.android.tools.build:gradle:4.1.0 被以下依赖需要: project : > 无法解析 com.android.tools.build:gradle:4.1.0 > 无法获取资源 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.1.0/gradle-4.1.0.pom' > 无法发起GET请求访问 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.1.0/gradle-4.1.0.pom' > 服务端可能不支持客户端请求的TLS协议版本: (TLSv1.2)。你可能需要配置客户端允许使用其他协议。 > sun.security.validator.ValidatorException: PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效证书路径 > 无法解析 com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:1.3.0 被以下依赖需要: project : > 无法解析 com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:1.3.0 > 无法获取资源 'https://dl.google.com/dl/android/maven2/com/google/android/libraries/mapsplatform/secrets-gradle-plugin/secrets-gradle-plugin/1.3.0/secrets-gradle-plugin-1.3.0.pom' > 无法发起GET请求访问 'https://dl.google.com/dl/android/maven2/com/google/android/libraries/mapsplatform/secrets-gradle-plugin/secrets-gradle-plugin/1.3.0/secrets-gradle-plugin-1.3.0.pom' > 服务端可能不支持客户端请求的TLS协议版本: (TLSv1.2)。你可能需要配置客户端允许使用其他协议。 > sun.security.validator.ValidatorException: PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效证书路径 > 无法解析 com.google.gms:google-services:4.3.3 被以下依赖需要: project : > 无法解析 com.google.gms:google-services:4.3.3 > 无法获取资源 'https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.3.3/google-services-4.3.3.pom' > 无法发起GET请求访问 'https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.3.3/google-services-4.3.3.pom' > 服务端可能不支持客户端请求的TLS协议版本: (TLSv1.2)。你可能需要配置客户端允许使用其他协议。 > sun.security.validator.ValidatorException: PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效证书路径
问题根因
该报错是Android项目Gradle构建阶段无法拉取Google Maven仓库依赖导致的,触发原因分为两类:一是Gradle请求仓库时使用的TLS协议版本和服务端不兼容,二是本地JDK信任库缺少对应站点的根证书、或当前网络存在代理/防火墙拦截导致证书校验失败。
修复方案
- 调整Gradle TLS配置
在项目根目录的gradle.properties文件中添加以下配置,强制启用兼容的TLS协议版本:systemProp.jdk.tls.client.protocols=TLSv1.2,TLSv1.3 systemProp.https.protocols=TLSv1.2,TLSv1.3 - 替换国内镜像源
若当前网络无法正常访问Google官方仓库,可修改项目根目录build.gradle中的仓库配置,替换为国内阿里镜像:
若使用的是Gradle 7.0+版本,还需同步修改buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/public' } } } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } } }settings.gradle中的dependencyResolutionManagement配置块,替换为上述镜像地址。 - 导入站点证书到JDK信任库
若为JDK证书缺失问题,可先手动导出dl.google.com的站点证书,再执行以下命令导入JDK信任库:
信任库默认密码为keytool -import -alias google_maven -keystore ${JAVA_HOME}/jre/lib/security/cacerts -file 你的证书文件路径.cerchangeit,导入完成后重启IDE重新执行构建即可。 - 清理无效代理配置
检查gradle.properties以及全局Gradle配置文件中的代理配置,若当前无代理,删除所有以systemProp.http.proxy、systemProp.https.proxy开头的配置项,避免请求被异常拦截。
内容的提问来源于stack exchange,提问作者tanzeem hussain
相关产品推荐
相关产品推荐

