查看原文
其他

Android Studio中gradle版本升级报gradle的仓库地址不安全警告

云天实验室 哆啦安全 2022-05-24

1.Android Studio中gradle版本升级(阿里云仓库下载源)

classpath 'com.android.tools.build:gradle:3.6.3'升级为classpath 'com.android.tools.build:gradle:7.0.0'
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.7-all.zip升级为distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip


2.Android Studio报gradle的仓库地址不安全警告的错误





使用"阿里云"仓库为下载源,如果直接升级gradle版本,可能会报错(gradle的仓库地址不安全警告的错误),因为配置了除maven中央仓库之外的其他不安全的仓库(一些国内的镜像仓库,如"阿里云"镜像仓库也是不安全的),如下所示:

A problem occurred configuring root project 'Packer'.> Could not resolve all dependencies for configuration ':classpath'. > Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository 'maven(http://maven.aliyun.com/nexus/content/groups/public/)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols. See https://docs.gradle.org/7.0.2/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol for more details. * Try:Run with --info or --debug option to get more log output. Run with --scan to get full insights.


3.使用allowInsecureProtocol属性解决gradle的仓库地址不安全警告的解决方法

gradle中有一个属性可以允许gradle使用"不安全"的仓库并且不报警告信息,该属性是allowInsecureProtocol,指定通过不安全的HTTP连接与仓库通信是否可接受,如果该属性的值设置为true,则表示接受"不安全"的仓库地址

只需要在C:\Users\LENOVO\.gradle\init.gradle文件中或者App项目工程的build.gradle中进行如下的配置即可解决


解决方法:只需要在C:\Users\LENOVO\.gradle\init.gradle文件中或者App项目工程的build.gradle中,使用allowInsecureProtocol属性(允许gradle使用"不安全"的仓库并且不报警告信息)allowInsecureProtocol = true


(1).C:\Users\LENOVO\.gradle\init.gradle


(2).App项目工程的build.gradle

buildscript { repositories { //ADD START maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/repositories/google' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' } //ADD END google() jcenter() } dependencies {        classpath 'com.android.tools.build:gradle:7.0.0' }}


allprojects { repositories { //ADD START maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/repositories/google' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' } //ADD END google() jcenter() }}
task clean(type: Delete) { delete rootProject.buildDir}


4.Android Studio App项目工程同步成功、App项目编译成功



5.Android Studio中gradle的仓库地址不安全警告的通用解决方案(阿里云源)

gradle为了安全考虑,防止他人冒充目标服务器,并在资源中植入恶意代码...,所以默认禁用使用非官方的中央仓库(包括:阿里云),如果确认信任该仓库,需要显示声明信任它


第一种情况:with groovy

repositories { maven { allowInsecureProtocol = true url "http://maven.aliyun.com/nexus/content/groups/public/" } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/repositories/google' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }}


第二种情况:with kotlin

repositories { maven { isAllowInsecureProtocol = true setUrl("http://maven.aliyun.com/nexus/content/groups/public/") } maven { isAllowInsecureProtocol = true setUrl("http://maven.aliyun.com/nexus/content/repositories/jcenter") } maven { isAllowInsecureProtocol = true setUrl("http://maven.aliyun.com/nexus/content/repositories/google") } maven { isAllowInsecureProtocol = true setUrl("http://maven.aliyun.com/nexus/content/repositories/gradle-plugin") }}


Android Studio gradle无法编译App的完美解决方法


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存