Android Studio中Gradle 7.2同步报非安全协议错误如何解决?
问题原因
你的报错已经明确指向BintrayJCenter2(http://jcenter.bintray.com/)使用了未配置白名单的HTTP协议,这个JCenter源不是你手动写在顶层配置里的,是你引入的React Native第三方模块(比如react-native-unimodules、其他原生依赖)内部默认携带的旧配置,所以你之前加的allowInsecureProtocol没有覆盖到这个隐式引入的源。
另外你现有配置存在AGP版本不统一、依赖源重复声明、手动配置了HTTP源三个问题,也是同步失败的诱因。
修复步骤
- 统一AGP版本
你根目录gradle.build/android里声明的AGP版本是4.2.0,gradle.build/app里又声明了7.2版本,二者冲突,统一修改为7.2版本即可:
修改根目录gradle.build/android的dependencies块:
// 删掉旧的4.2.0版本声明,替换为下面的 classpath("com.android.tools.build:gradle:7.2")
- 修改所有手动配置的HTTP源为HTTPS
修改gradle.build/app里的maven源配置,把HTTP的repo1源改成HTTPS:
// 旧的配置:maven { url "http://repo1.maven.org/maven2" } // 替换为: maven { url "https://repo1.maven.org/maven2" }
- 全局覆盖隐式引入的JCenter源
在根目录gradle.build/android的allprojects -> repositories块里加入JCenter的全局配置,覆盖第三方依赖内部引入的HTTP版JCenter,同时删掉块内重复声明的google()、mavenCentral()配置(同一层级重复声明会导致配置优先级冲突):
allprojects { repositories { google() mavenCentral(){ allowInsecureProtocol = true } // 新增JCenter全局配置 jcenter { allowInsecureProtocol = true url "https://jcenter.bintray.com/" } mavenLocal() maven { url("$rootDir/../node_modules/react-native/android") } maven { url("$rootDir/../node_modules/jsc-android/dist") } maven { url 'https://www.jitpack.io' } } }
如果你的项目没有必须依赖JCenter的包,可以直接去掉JCenter配置,Gradle会自动从其他配置过的源拉取依赖,稳定性更高。
- 清理缓存重新同步
- 关闭Android Studio,删除项目根目录下的
.gradle文件夹 - 清除全局Gradle缓存:Windows系统删除
C:\Users\你的用户名\.gradle\caches目录,Mac系统删除~/.gradle/caches目录 - 重新打开Android Studio,触发Gradle同步即可。
内容的提问来源于stack exchange,提问作者Ibrahim Anam
相关产品推荐
相关产品推荐

