美文网首页Android
Android12新特性——google()maven()等第三

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

作者: DunerGee | 来源:发表于2021-10-25 15:05 被阅读0次

    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版)

    相关文章

      网友评论

        本文标题:Android12新特性——google()maven()等第三

        本文链接:https://www.haomeiwen.com/subject/orojaltx.html