Android 解决apk打包过程中出现的“Certificate for <jcenter.bintray.com> doesn't match any of the subject altern...

本文介绍了解决APK打包时出现的证书错误的方法,主要由于无法从jcenter.bintray.com获取jar包导致。提供了三种解决方案:使用国内Maven镜像仓库、修改jcenter()的访问地址以及手动下载并添加缺失的jar包。

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

 

有时候,apk打包过程中会出现“Certificate for <jcenter.bintray.com> doesn't match any of the subject alternative names: [*.aktana.com, aktana.com]”的错误。

 

这是因为本地计算机不能从jcenter.bintray.com上获取编译所需的某些jar包(被墙了)。

 

比如我的错误是:

Caused by: org.gradle.internal.resource.transport.http.HttpRequestException: Could not HEAD 'https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.2.0/kotlin-stdlib-1.2.0.jar'.

获取不到https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.2.0/kotlin-stdlib-1.2.0.jar这个包。

 

fanqiang、修改host文件均不行。

 

 

有3种解决方式:

1、使用国内的Maven镜像仓库,需要修改build.gradle文件。此处我们使用阿里的镜像仓库。

原来的build.gradle文件:

 1 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 2 
 3 buildscript {
 4     
 5     repositories {
 6         google()
 7         jcenter()
 8         mavenCentral()  //修改此处,用maven{ url 'http://maven.aliyun.com/nexus/content/repositories/central/'}替换掉mavenCentral(),并放在jcenter()之前,保证被先访问到
 9     }
10     dependencies {
11         classpath 'com.android.tools.build:gradle:3.2.0'
12         
13 
14         // NOTE: Do not place your application dependencies here; they belong
15         // in the individual module build.gradle files
16     }
17 }
18 
19 allprojects {
20     repositories {
21         google()
22         jcenter()
23         mavenCentral()   //此处也要修改
24     }
25 }
26 
27 task clean(type: Delete) {
28     delete rootProject.buildDir
29 }

 

修改过后的build.gradle文件:

 1 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 2 
 3 buildscript {
 4     
 5     repositories {
 6         maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}   //必须放在jcenter()之前,否则无效
 7         google()
 8         jcenter()
 9     }
10     dependencies {
11         classpath 'com.android.tools.build:gradle:3.2.0'
12         
13 
14         // NOTE: Do not place your application dependencies here; they belong
15         // in the individual module build.gradle files
16     }
17 }
18 
19 allprojects {
20     repositories {
21         maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
22         google()
23         jcenter()
24     }
25 }
26 
27 task clean(type: Delete) {
28     delete rootProject.buildDir
29 }

 

 重新编译一遍,会自动下载缺少的jar包,成功。之后就可以顺利打包apk了。

 

此种方式最简单,也最有效,推荐。

 

 

 

 

 

2、手动修改jcenter()的访问地址

 1 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 2 
 3 buildscript {
 4     
 5     repositories {
 6         google()
 7         jcenter(){url 'http://maven.aliyun.com/nexus/content/groups/public/'}   //此处使用的是阿里的镜像仓库
 8        //注意:需要删除maven()才有效
 9     }
10     dependencies {
11         classpath 'com.android.tools.build:gradle:3.2.0'
12         
13 
14         // NOTE: Do not place your application dependencies here; they belong
15         // in the individual module build.gradle files
16     }
17 }
18 
19 allprojects {
20     repositories {
21         google()
22         jcenter(){url 'http://maven.aliyun.com/nexus/content/groups/public/'}
23 
24     }
25 }
26 
27 task clean(type: Delete) {
28     delete rootProject.buildDir
29 }

 

已测,有效。

 

 

 

 

3、复制缺少的jar包的地址(报错信息里有),比如我的是https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.2.0/kotlin-stdlib-1.2.0.jar,使用迅雷下载,手动添加依赖。

很麻烦,十分容易出错,及其不推荐。

 

不得不说迅雷还是很强,很多普通vpn搞不定的资源它还能下载。

 

转载于:https://www.cnblogs.com/chy18883701161/p/10991654.html

### 解决方案概述 对于遇到 `PKIX path building failed` 错误的情况,尤其是在访问像 JCenter 或 Bintray 这样的远程仓库时,通常是因为 Java 安全框架未能找到有效的认证路径来验证服务器提供的 SSL/TLS 证书。这可能由于本地 JDK/JRE 的受信证书库缺少必要的 CA 证书。 为了修复此问题并成功连接至 jcenter.bintray.com,可以采取以下措施: #### 更新JDK自带CA证书库 确保使用最新版本的 JDK 可能会解决问题,因为较新的 JDK 版本包含了更多更新过的 CA 证书。如果已经是最新的 JDK,则考虑手动导入所需的 CA 证书到当前使用的 JDK 中[^2]。 ```bash cd $JAVA_HOME/jre/lib/security/ keytool -importcert -alias bintray -file /path/to/bintray.pem -keystore cacerts ``` 默认密码通常是 `changeit`. #### 修改Gradle配置文件以忽略SSL验证(不推荐) 虽然可以通过设置 Gradle 来跳过 SSL 验证从而绕过这个问题,但这不是一个安全的做法,并且可能会使应用程序面临中间人攻击的风险。因此这种方法仅作为临时解决方案,在生产环境中应避免这样做[^1]. ```groovy // build.gradle or settings.gradle systemProp.http.strictssl=false ``` #### 使用HTTPS代理或自定义TrustManager(高级选项) 另一种方法是在构建过程中通过 HTTPS 代理转发请求或将特定站点加入白名单的方式处理;也可以编写自定义 TrustManager 类来自行管理哪些主机名是可以信任的。不过这些都需要更深入的技术背景以及对项目安全性有充分理解的情况下实施[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值