允许不安全的协议,安卓的gradle
我最近更新了我的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()
}
我如何解决这个问题?
对于Gradle 7以上版本的不安全HTTP连接,我们需要在MavenArtifactRepository
关闭中指定一个布尔值allowInsecureProtocol为true。
由于你在sonatype
仓库中收到了这个错误,你需要按照下面的方法来设置仓库。
- 灰色的DSL(Groovy DSL)。
repositories {
maven {
url "http://oss.sonatype.org/content/repositories/snapshots"
allowInsecureProtocol = true
}
// other repositories ...
}
- Kotlin语言的DSL
repositories {
maven {
url = uri("http://oss.sonatype.org/content/repositories/snapshots")
isAllowInsecureProtocol = true
}
// other repositories ...
}
url
和allowInsecureProtocol
的语法是什么?
- trebor 2021-08-19
;
来分隔这些语句,如果你想让它们在同一行的话。
- Jay 2021-08-19
allowInsecureProtocol = true
得到了解决。
- TheDeepThinker 2022-03-15
allowInsecureProtocol(true)
来使用。
- n_r 2022-07-18
或者你可以直接用HTTPS
来代替HTTP
。
对于那些使用Kotlin DSL的人来说,属性名称是不同的isAllowInsecureProtocol
。
maven {
url = uri("http://oss.sonatype.org/content/repositories/snapshots")
isAllowInsecureProtocol = true
}
为存储库中所有不安全的http添加allowInsecureProtocol = true,例如:允许不安全的http。
maven {
url "http://storage.googleapis.com/r8-releases/raw"
allowInsecureProtocol = true
}
maven {
url "http://tokbox.bintray.com/maven/"
allowInsecureProtocol = true
}
请注意,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。
由于某些未知的原因,在最近使用Gradle 7.x的工作空间中,编码赋值语句"allowInsecureProtocol = true"停止工作,我发现当我改为编码setAllowInsecureProtocol(true)时,它又正常了。
maven { url "http://myinsecure/repository...";
setAllowInsecureProtocol(true);
// allowInsecureProtocol = true
}
我没有关于赋值语句停止工作的确切时间的信息。
另外,关于使用https的评论--我明白了--这是很好的建议,但在这个例子中,这不是我所能控制的。
我试着换成了maven2,解决了我的问题
maven2 {
url "http://oss.sonatype.org/content/repositories/snapshots"
allowInsecureProtocol = true
}