Android Studio4.2.2升级后测试失败 maven仓库HTTP报错如何解决
问题根因
你遇到的问题并非Android Studio 4.2.2默认修改了mavenCentral的请求协议,而是当前使用的4.3.1版本Robolectric内置了HTTP协议的默认中央仓库地址,同时Robolectric 4.3.1与Android Studio 4.2默认搭载的JDK11存在SSL适配兼容问题,共同导致了测试执行失败。
解决方案
优先推荐方案2,新版本Robolectric还修复了大量已知问题,适配更高版本的Android SDK和构建工具。
方案1:强制指定Robolectric依赖仓库为HTTPS协议
在项目根目录的gradle.properties文件中添加以下配置:
# 强制Robolectric使用HTTPS协议的maven中央仓库拉取依赖 robolectric.dependency.repo.url=https://repo1.maven.org/maven2 robolectric.dependency.repo.id=central
同时在模块级build.gradle中添加测试VM参数,解决SSL适配错误:
android { // 其他配置保持不变 testOptions { unitTests.all { jvmArgs '-Djavax.net.ssl.trustStoreType=jks' } } }
方案2:升级Robolectric到兼容版本
将Robolectric依赖版本升级到4.5及以上稳定版,新版本已默认使用HTTPS仓库地址,同时修复了JDK11的适配问题:
dependencies { // 替换原有Robolectric依赖版本 testImplementation 'org.robolectric:robolectric:4.10.3' }
方案3:全局强制重定向HTTP仓库请求
如果不想修改Robolectric相关配置,可以在根目录build.gradle的allprojects配置块中添加仓库重定向规则,将所有HTTP协议的mavenCentral请求强制转为HTTPS:
allprojects { repositories { // 原有仓库配置保持不变 all { ArtifactRepository repo -> if (repo.url.toString().startsWith('http://repo1.maven.org/maven2')) { repo.url = uri('https://repo1.maven.org/maven2') } } } }
内容的提问来源于stack exchange,提问作者Jay Whitsitt
相关产品推荐
相关产品推荐

