Flutter构建报错:不确定是证书问题还是Flutter更新所致
自11月27日起,未对项目做重大变更的情况下,控制台抛出以下构建错误:
任务':app:checkDebugAarMetadata'执行失败。
无法解析配置':app:debugRuntimeClasspath'的所有文件。
无法解析androidx.annotation:annotation:1.9.1。
依赖来源:
project :app > project :path_provider_android无法解析androidx.annotation:annotation:1.9.1。
无法获取资源'https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.9.1/annotation-1.9.1.pom'。
无法GET 'https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.9.1/annotation-1.9.1.pom'。
服务器可能不支持客户端请求的TLS协议版本: (TLSv1.2, TLSv1.3)。可能需要配置客户端以允许使用其他协议。
PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
不确定错误是与androidx.annotation:annotation:1.9.1相关,还是单纯的maven仓库访问问题。
排查与修复方案
修复SSL证书信任问题
错误核心是PKIX路径构建失败,说明本地缺少Google Maven仓库的SSL证书。手动导入证书步骤:- 用浏览器打开Google Maven仓库地址,导出网站的SSL证书(格式选.crt)
- 找到本地JDK目录下的
jre/lib/security/cacerts文件,执行命令导入证书:keytool -import -alias google_maven -keystore cacerts -file 你的证书路径.crt
(默认密钥库密码为
changeit)强制指定稳定依赖版本
可能是path_provider_android自动拉取了较新的annotation版本导致兼容性问题,在app模块的build.gradle中强制指定稳定版本:dependencies { constraints { implementation("androidx.annotation:annotation:1.8.0") } }配置Gradle TLS协议
若确为TLS协议不兼容,在gradle.properties中添加以下配置:systemProp.javax.net.ssl.trustStore=你的JDK cacerts文件路径 systemProp.javax.net.ssl.trustStorePassword=changeit systemProp.org.gradle.jvmargs=-Dhttps.protocols=TLSv1.2,TLSv1.3清理Gradle缓存重新拉取
执行命令清理本地缓存,重新获取依赖:./gradlew clean build --refresh-dependencies
内容的提问来源于stack exchange,提问作者Diego Valberdi

