栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android12新特性——google()maven()等第三方添加

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android12新特性——google()maven()等第三方添加

Android12中第三方库的添加 添加第三方库错误提示:
Caused by: org.gradle.api.InvalidUserCodeException: Build was configured to prefer settings repositories over project repositories but repository 'Google' was added by build file 'build.gradle'
	at org.gradle.internal.management.DefaultDependencyResolutionManagement.repoMutationDisallowedOnProject(DefaultDependencyResolutionManagement.java:201)
	at org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285)
	at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:264)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113)
	at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:253)
	at org.gradle.api.internal.artifacts.DefaultArtifactRepositoryContainer.access$101(DefaultArtifactRepositoryContainer.java:35)
	at org.gradle.api.internal.artifacts.DefaultArtifactRepositoryContainer.lambda$new$0(DefaultArtifactRepositoryContainer.java:38)
	at org.gradle.api.internal.artifacts.DefaultArtifactRepositoryContainer.addWithUniqueName(DefaultArtifactRepositoryContainer.java:101)
	at org.gradle.api.internal.artifacts.DefaultArtifactRepositoryContainer.addRepository(DefaultArtifactRepositoryContainer.java:89)
	at org.gradle.api.internal.artifacts.DefaultArtifactRepositoryContainer.addRepository(DefaultArtifactRepositoryContainer.java:84)
	at org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.google(DefaultRepositoryHandler.java:151)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at org.gradle.internal.metaobject.BeanDynamicObject$metaClassAdapter.invokeMethod(BeanDynamicObject.java:484)
	at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:196)
	at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
	at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:34)
	at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:56)

如果你遇到这个错误首先检查你的sdk版本是多少
如果是31,这就是问题所在

原因

我看到很多人提问使用Android Studio4.2出现这个问题,其实不然(至少我自己遇到的问题不是如此)。
其实主要问题不是你的AS版本,而是你的sdk版本问题。

方式1

你可以尝试先在AndroidStudio4.2中将你的sdk版本将到30,然后在build.gradle(project)中按照原本的方式(如下)重新添加依赖看是否还会有此问题,这是我老项目的处理方式。

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
        maven { url "https://jitpack.io" }
    }
}
方式2

这也是google建议的方式
打开你的settings.gradle文件你就会惊喜的发现如下代码:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}

是不是很熟悉,没错其中repositories括号内的就是我们原本应该写在build.gradle(project)文件中的allprojects {}中的引用。
这就是google在此版本建议的引用方式。
所以你只需要将你需要引入的第三方库写在settings.gradle文件中即可。

备注:你会发现jcenter已经画了横线,所以不建议继续使用jcenter的第三方库,如果有使用了jcenter的建议尽早更换库或者根据第三方库的提示进行迁移。

这就是这个错误的解决方式,你可以根据你的项目实际情况进行选择哪个方式

(方式1是我自己根据自己项目情况使用的方式,目前我还没测试这个问题与Android Studio版本有什么关系,如果有人是使用Android Studio4.2或Android Studio Arctic Fox 并且sdk版本是30以下也会有这个问题,请评论一下一起寻找原因)

我自己目前Android Studio版本是
Android Studio Arctic Fox | 2020.3.1(M1mac版)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号