IO exception while downloading manifest: java.io.IOException: Unable to tunnel through proxy. Proxy

本文介绍了当Gradle配置了无效的下载代理时可能导致的问题及解决方法。通过找到C盘下的gradle.properties文件并注释掉代理配置,可以解决由于代理不可用导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因

你本地gradle配置了下载代理,并且该代理不可用

解决办法

找到你c盘下的gradle.properties文件
在这里插入图片描述
注释掉代理配置即可
在这里插入图片描述

1 actionable task: 1 up-to-date bdlf@bdlf-desktop:~/AndroidUSBClient$ rm -rf ~/.gradle/caches/ bdlf@bdlf-desktop:~/AndroidUSBClient$ ./gradlew assembleDebug This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times. IOException: https://dl.google.com/android/repository/addons_list-5.xml javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed IOException: https://dl.google.com/android/repository/addons_list-4.xml javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed IOException: https://dl.google.com/android/repository/addons_list-3.xml javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed IOException: https://dl.google.com/android/repository/addons_list-2.xml javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed IOException: https://dl.google.com/android/repository/addons_list-1.xml javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed Failed to download any source lists! IO exception while downloading manifest: javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:378) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321) 如何解决?
最新发布
05-20
### 解决方案:Gradle 构建中 SSLHandshakeException 和 SDK XML 版本不匹配问题 #### 1. **关于 `javax.net.ssl.SSLHandshakeException: PKIX path validation failed` 的根本原因** 此错误通常表示 Gradle 在访问远程仓库时无法验证服务器的 SSL/TLS 证书链。常见原因是: - 客户端的信任库中缺少目标服务器的根 CA 证书[^1]。 - 系统时间不正确,导致证书有效性检查失败[^2]。 - 使用了旧版 JDK 或 Gradle,它们可能不支持较新的 TLS 协议版本[^3]。 --- #### 2. **解决 `SSLHandshakeException` 的方法** ##### 方法一:升级 JDK 和 Gradle 确保使用最新版本的 JDK 和 Gradle,因为旧版本可能存在对现代加密算法的支持不足的问题。例如: - 推荐使用 JDK 11 或更高版本。 - 更新 Gradle 至 7.x 或更高版本。 在 Android 项目中,可通过以下方式指定 JDK 和 Gradle 版本: ```gradle // gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip ``` 同时,在 Android Studio 设置中选择合适的 JDK 路径: ```plaintext File -> Project Structure -> SDK Location -> JDK location ``` --- ##### 方法二:手动导入所需证书 如果问题是由于信任库中缺少特定证书引起的,则可以将该证书导入到 JVM 的默认信任库中: ```bash keytool -importcert -file server.crt -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit ``` 其中,`server.crt` 是目标服务器的证书文件。如果没有现成的证书文件,可使用工具如 `InstallCert.java` 动态捕获并导入[^3]。 --- ##### 方法三:禁用 HTTPS 验证(仅限开发环境) 虽然不推荐,但在某些情况下可以通过禁用 SSL 验证来快速解决问题。可在 `gradle.properties` 文件中添加以下内容: ```properties systemProp.javax.net.ssl.trustStore=/path/to/custom/truststore systemProp.javax.net.ssl.trustStorePassword=yourpassword ``` 或者直接运行 Gradle 命令时传入参数: ```bash ./gradlew assembleDebug -Djavax.net.ssl.trustStoreDisableDefault=true ``` --- #### 3. **关于 `This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered` 的根本原因** 此错误表明当前使用的工具或插件版本较低,无法解析较新的 SDK XML 文件格式。主要原因是: - Android Gradle Plugin (AGP) 或 Gradle 版本过低[^4]。 - Android SDK Tools 或 Build Tools 版本过高,超出了 AGP 支持的最大范围[^5]。 --- #### 4. **解决 SDK XML 版本不匹配问题的方法** ##### 方法一:同步 AGP 和 Gradle 版本 确保 Android Gradle Plugin 和 Gradle 的版本兼容。例如: - 如果使用的是 AGP 7.x,则需搭配 Gradle 7.x。 - 如果遇到高版本 SDK XML 文件问题,应升级 AGP 到至少 4.2 或更高版本。 在 `build.gradle` 文件中配置 AGP 版本: ```gradle plugins { id 'com.android.application' version '7.4.0' apply false } ``` --- ##### 方法二:降级 Android SDK Tools 如果暂时无法升级 AGP,可以选择降级 Android SDK Tools。通过 Android Studio 的 SDK Manager 手动安装较低版本的 SDK Tools 和 Build Tools。 执行以下命令查看当前 SDK Tools 版本: ```bash sdkmanager --version ``` 然后切换到兼容版本,例如: ```bash sdkmanager "platform-tools" "build-tools;30.0.3" ``` --- ##### 方法三:清理缓存并重新同步 有时缓存可能导致版本冲突问题。尝试清除 Gradle 缓存并重新同步项目: ```bash rm -rf ~/.gradle/caches/ ./gradlew clean assembleDebug ``` --- #### 5. **综合代码示例** 以下是一个完整的 `gradle.properties` 配置示例,适用于解决上述两个问题: ```properties # 禁用 SSL 验证(仅用于开发环境) org.gradle.jvmargs=-Xmx2048m -Djavax.net.ssl.trustStoreDisableDefault=true # 指定 AGP 和 Kotlin 插件版本 android.useAndroidX=true kotlin.code.style=official # 清理缓存标志 android.builder.sdkDownload=true ``` --- ### 总结 通过升级 JDK、Gradle 和 AGP,手动导入证书,或适当调整 SDK Tools 版本,可以有效解决 `SSLHandshakeException` 和 SDK XML 版本不匹配问题。建议优先采用正式的安全解决方案,而不是简单地禁用 SSL 验证。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值