【问题标题】:Allow insecure protocols, android gradle允许不安全的协议,android gradle
【发布时间】:2021-10-05 16:47:01
【问题描述】:

我最近将我的 android studio 更新到了北极狐,但我的项目出现了错误

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()
}

我该如何解决?

【问题讨论】:

  • 为存储库中的所有不安全 http 添加 allowInsecureProtocol = true

标签: android android-studio build.gradle


【解决方案1】:

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

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

maven {
        url "http://tokbox.bintray.com/maven/"
        allowInsecureProtocol = true
    }

【讨论】:

    【解决方案2】:

    对于 Gradle 7+ 版本中的不安全 HTTP 连接,我们需要将布尔值 allowInsecureProtocol 指定为 true 到 MavenArtifactRepository 闭包。
    由于您收到sonatype 存储库的此错误,因此您需要将存储库设置如下:

    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"
            allowInsecureProtocol = true
        }
        maven {
            url "https://plugins.gradle.org/m2/"
        }
        maven {
            url "https://maven.google.com"
        }
        google()
        mavenCentral()
        jcenter()
    }
    

    【讨论】:

    • 在同一行配置urlallowInsecureProtocol的语法是什么?
    • 嗯,这就是 Groovy,所以如果你想让它们在同一行,你可以使用 ; 分隔语句。
    • 为存储库中的所有不安全 http 添加 allowInsecureProtocol = true
    【解决方案3】:

    [Android Studio 北极狐] 这种方式适合我。

    【讨论】:

    • setAllowInsecureProtocol(true) 在 ArcticFox 上为我带来了魔力,而其他语法 (with ... = true) 则没有
    【解决方案4】:

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

                maven {
                    url = uri("http://oss.sonatype.org/content/repositories/snapshots")
                    isAllowInsecureProtocol = true
                }
    

    【讨论】:

    • 为我工作。谢谢
    【解决方案5】:

    请注意,从 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

    【讨论】:

      【解决方案6】:

      或者您可以将HTTP 替换为HTTPS

      【讨论】:

      • 如果您使用自己的不支持 SSL 的镜像,也许您不能。
      • 不仅如此,您还需要一个受信任的证书。
      • 它尝试了这个并且使用了一个字母“S”:)
      • 这并不总是最好的解决方案,就好像你有 vpn 一样,它会显着减慢构建速度
      • 为我工作!谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      相关资源
      最近更新 更多