允许不安全的协议,安卓的gradle

回答 7 浏览 9万 2021-07-30

我最近更新了我的android studio到Arctic Fox,在我的项目中出现了一个错误

A problem occurred configuring root project 'so10'.
> Could not resolve all dependencies for configuration ':classpath'.
   > Using insecure protocols with repositories, without explicit opt-in, is     unsupported. Switch Maven repository 
'maven3(http://oss.sonatype.org/content/repositories/snapshots)' 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. 

这是我的gradle,问题发生在这里。

repositories {
    // maven { url 'https://maven.fabric.io/public' }
    maven { url "https://jitpack.io" }
    maven { url 'https://raw.github.com/Raizlabs/maven-releases/master/releases' }
    maven { url 'http://oss.sonatype.org/content/repositories/snapshots'}
    maven { url "https://plugins.gradle.org/m2/" }
    maven { url 'https://maven.google.com'  }
    google()
    mavenCentral()
    jcenter()
}

我如何解决这个问题?

WISHY 提问于2021-07-30
为存储库中所有不安全的http添加 allowInsecureProtocol = true。Ashraf Amin 2021-10-27
7 个回答
#1楼 已采纳
得票数 190

对于Gradle 7以上版本的不安全HTTP连接,我们需要在MavenArtifactRepository关闭中指定一个布尔值allowInsecureProtocol为true。
由于你在sonatype仓库中收到了这个错误,你需要按照下面的方法来设置仓库。

  1. 灰色的DSL(Groovy DSL)。
repositories {
    maven {
        url "http://oss.sonatype.org/content/repositories/snapshots"
        allowInsecureProtocol = true
    }
    // other repositories ...
}
  1. Kotlin语言的DSL
repositories {
    maven {
        url = uri("http://oss.sonatype.org/content/repositories/snapshots")
        isAllowInsecureProtocol = true
    }
    // other repositories ...
}
Jay 提问于2021-07-30
Jay 修改于2022-03-17
在同一行中配置urlallowInsecureProtocol的语法是什么?trebor 2021-08-19
嗯,这是Groovy,所以你可以用;来分隔这些语句,如果你想让它们在同一行的话。Jay 2021-08-19
为存储库中所有不安全的http添加 allowInsecureProtocol = true。Ashraf Amin 2021-10-27
我的问题通过在我的(Windows)C:\Users\lt;userid>\.gradle\init.gradle文件中添加allowInsecureProtocol = true得到了解决。TheDeepThinker 2022-03-15
你现在需要把它当作allowInsecureProtocol(true)来使用。n_r 2022-07-18
#2楼
得票数 35

或者你可以直接用HTTPS来代替HTTP

basaveshwar lamture 提问于2021-08-01
如果你使用你自己的不支持SSL的镜像,也许你不能这样做。The incredible Jan 2021-08-02
不仅仅是这样,你还需要一个受信任的证书。Abhijit Sarkar 2021-08-11
试着这样做,而且是用一个字母"S":),它就成功了。serif 2021-12-04
这并不总是最好的解决方案,例如,如果你有vpn,它将大大减慢构建速度。bashar 2021-12-10
#3楼
得票数 20

对于那些使用Kotlin DSL的人来说,属性名称是不同的isAllowInsecureProtocol

maven {
    url = uri("http://oss.sonatype.org/content/repositories/snapshots")
    isAllowInsecureProtocol = true
}
Phillip Fleischer 提问于2021-08-26
Ahmed Ashour 修改于2022-05-12
#4楼
得票数 11

为存储库中所有不安全的http添加allowInsecureProtocol = true,例如:允许不安全的http。

maven {
        url "http://storage.googleapis.com/r8-releases/raw"
        allowInsecureProtocol = true
    }

maven {
        url "http://tokbox.bintray.com/maven/"
        allowInsecureProtocol = true
    }
Ashraf Amin 提问于2021-09-22
basaveshwar lamture 修改于2021-10-24
#5楼
得票数 9

请注意,Gradle 7以后,任何不安全的URL都会被阻止,不仅仅是针对仓库,所以应用脚本也会失败。

apply from: "http://mycompany.com/buildscript.gradle"

在没有明确选择的情况下,从不安全的URI中应用脚本插件是不被支持的。

如果你由于各种原因不能使用HTTPS,那么请做以下工作。

apply from: resources.text.fromInsecureUri("http://mycompany.com/buildscript.gradle")

然而,如果我是Gradle的开发者,我会提供一个org.gradle.allow-insecure-protocol=true,在gradle.properties中设置,就可以了。我已经为此打开了https://github.com/gradle/gradle/issues/18006

Abhijit Sarkar 提问于2021-08-11
Abhijit Sarkar 修改于2021-08-13
#6楼
得票数 1

由于某些未知的原因,在最近使用Gradle 7.x的工作空间中,编码赋值语句"allowInsecureProtocol = true"停止工作,我发现当我改为编码setAllowInsecureProtocol(true)时,它又正常了。

 maven {    url "http://myinsecure/repository..."; 
            setAllowInsecureProtocol(true);
            // allowInsecureProtocol = true
        }

我没有关于赋值语句停止工作的确切时间的信息。

另外,关于使用https的评论--我明白了--这是很好的建议,但在这个例子中,这不是我所能控制的。

Pete Kelley 提问于2022-09-08
Pete Kelley 修改于2022-09-29
#7楼
得票数 -1

我试着换成了maven2,解决了我的问题

 maven2 {
            url "http://oss.sonatype.org/content/repositories/snapshots"
            allowInsecureProtocol = true
        }
Nejib Afdhal 提问于2022-07-02