Android Studio生成签名APK遇证书路径错误,需获取dl.google.com根证书
我使用Android Studio Dolphin 2021.3.1,生成签名App Bundle一切正常,但切换为生成签名APK时,出现unable to find valid certification path to requested target错误。已尝试关闭VPN、代理等多种方案均无效,原本打算通过keytool导入根证书解决,但无法获取https://dl.google.com的根证书。详细错误信息如下:
任务':app:lintVitalAnalyzeRelease'执行失败。
无法解析配置':app:detachedConfiguration1'的所有文件。
无法下载lint-gradle-30.3.1.jar(com.android.tools.lint:lint-gradle:30.3.1)无法获取资源'https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/30.3.1/lint-gradle-30.3.1.jar'。
无法执行GET请求获取该资源。
服务器可能不支持客户端请求的TLS协议版本:(TLSv1.2, TLSv1.3)。您可能需要配置客户端以允许使用其他协议。
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
无法下载lint-30.3.1.jar(com.android.tools.lint:lint:30.3.1)
无法获取资源'https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/30.3.1/lint-30.3.1.jar'。
无法执行GET请求获取该资源。
服务器可能不支持客户端请求的TLS协议版本:(TLSv1.2, TLSv1.3)。您可能需要配置客户端以允许使用其他协议。
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
无法下载lint-checks-30.3.1.jar(com.android.tools.lint:lint-checks:30.3.1)
无法获取资源'https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/30.3.1/lint-checks-30.3.1.jar'。
无法执行GET请求获取该资源。
服务器可能不支持客户端请求的TLS协议版本:(TLSv1.2, TLSv1.3)。您可能需要配置客户端以允许使用其他协议。
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
无法下载lint-api-30.3.1.jar(com.android.tools.lint:lint-api:30.3.1)
无法获取资源'https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/30.3.1/lint-api-30.3.1.jar'。
无法执行GET请求获取该资源。
服务器可能不支持客户端请求的TLS协议版本:(TLSv1.2, TLSv1.3)。您可能需要配置客户端以允许使用其他协议。
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
无法下载intellij-core-30.3.1.jar(com.android.tools.external.com-intellij:intellij-core:30.3.1)
无法获取资源'https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/30.3.1/intellij-core-30.3.1.jar'。
无法执行GET请求获取该资源。
服务器可能不支持客户端请求的TLS协议版本:(TLSv1.2, TLSv1.3)。您可能需要配置客户端以允许使用其他协议。
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
无法下载kotlin-compiler-30.3.1.jar(com.android.tools.external.com-intellij:kotlin-compiler:30.3.1)
无法获取资源'https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/kotlin-compiler/30.3.1/kotlin-compiler-30.3.1.jar'。
无法执行GET请求获取该资源。
服务器可能不支持客户端请求的TLS协议版本:(TLSv1.2, TLSv1.3)。您可能需要配置客户端以允许使用其他协议。
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
无法下载uast-30.3.1.jar(com.android.tools.external.org-jetbrains:uast:30.3.1)
无法获取资源'https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/30.3.1/uast-30.3.1.jar'。
无法执行GET请求获取该资源。
服务器可能不支持客户端请求的TLS协议版本:(TLSv1.2, TLSv1.3)。您可能需要配置客户端以允许使用其他协议。
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
无法下载aapt2-proto-7.0.0-beta04-7396180.jar(com.android.tools.build:aapt2-proto:7.0.0-beta04-7396180)
无法获取资源'https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto/7.0.0-beta04-7396180/aapt2-proto-7.0.0-beta04-7396180.jar'。
无法执行GET请求获取该资源。
服务器可能不支持客户端请求的TLS协议版本:(TLSv1.2, TLSv1.3)。您可能需要配置客户端以允许使用其他协议。
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
解决办法
1. 临时跳过Lint检查(应急方案)
如果需要快速生成APK,可在app模块的build.gradle中添加配置,关闭lintVitalRelease任务:
android { buildTypes { release { lintOptions { checkReleaseBuilds false abortOnError false } } } }
2. 正确获取并导入dl.google.com根证书
- 导出证书:用Chrome打开https://dl.google.com,点击地址栏锁图标 → 「证书」→ 「详细信息」→ 「复制到文件」,选择DER编码格式,保存为
google_root.cer。 - 定位JDK路径:Android Studio中依次点击「File」→「Project Structure」→「SDK Location」,复制「JDK Location」路径。
- 导入证书:打开终端执行命令(替换占位符为实际路径):
keytool -importcert -alias dl_google_cert -file <证书保存路径>/google_root.cer -keystore <JDK路径>/jre/lib/security/cacerts
默认信任库密码为changeit,输入后确认导入即可。
3. 配置Gradle兼容TLS协议
在项目根目录的gradle.properties中添加以下配置:
systemProp.jdk.tls.client.protocols=TLSv1.2,TLSv1.3 systemProp.https.protocols=TLSv1.2,TLSv1.3
4. 手动下载依赖到本地仓库
如果以上方法无效,可从Maven仓库手动下载所需jar包,放到本地Maven仓库对应路径(默认路径为~/.m2/repository/下的对应依赖目录)。
内容的提问来源于stack exchange,提问作者user3267567

