如何解决原生Java或Kotlin中的错误" The minCompileSdk (31) specified in a dependency's AAR metadata"?

回答 8 浏览 31.7万 2021-09-02

该错误信息。

The minCompileSdk (31) specified in a dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) is greater than this module's compileSdkVersion (android-30). Dependency: androidx.core:core-ktx:1.7.0-alpha02.

AAR metadata file:
C:\Users\mohammad.zeeshan1.gradle\caches\transforms-2\files-2.1\a20beb0771f59a8ddbbb8d416ea06a9d\jetified-core-ktx-1.7.0-alpha02\META-INF\com\android\build\gradle\aar-metadata.properties.

Mohammad Zeeshan 提问于2021-09-02
(拟议中的二维码,与本问题不同,有一个MCVE)Zoe stands with Ukraine 2021-09-23
8 个回答
#1楼
得票数 233

在你的build.gradle(app)文件中,将compileSdkVersiontargetSdkVersion都设置为31

android {
    compileSdkVersion 31 // <-- This
    defaultConfig {
        applicationId "com.example.app"
        targetSdkVersion 31 // <-- and this too
        // ...
    }
}
CopsOnRoad 提问于2021-09-05
检查这个库:implementation 'androidx.appcompat:appcompat:1.4.0' 改为1.3.1版本。并用resolutionStrategy { force 'androidx.core:core:1.6.0' }。FreddicMatters 2021-11-24
在我将其改为31后,Gradle构建失败了。Mooncrater 2021-12-02
将编译SDK的版本改为31,对我来说是有效的。bharat udasi 2022-04-19
在将gradle'的build.gradle文件中的ext.kotlin_version更新为最新版本后,这对我来说是可行的。chowmein 2022-05-13
#2楼 已采纳
得票数 144

我已经找到了解决办法。在应用程序的Gradle文件中输入上述包的这行代码。

对于Kotlin开发者来说。

configurations.all {
    resolutionStrategy { force 'androidx.core:core-ktx:1.6.0' }
}

Screenshot of code with a red freehand circle

对于Java开发者来说

configurations.all {
    resolutionStrategy { force 'androidx.core:core:1.6.0' }
}
Mohammad Zeeshan 提问于2021-09-03
Peter Mortensen 修改于2022-01-01
对于java开发者来说,删除ktxresolutionStrategy {force 'androidx.core:core:1.6.0'}Zain 2021-09-18
我在ReactNative上仍然遇到同样的问题。在我的项目中,添加这一行并不奏效。是否有更多的方法来解决这个问题?Ayush Katuwal 2021-09-21
在Arctic Fox中,这个黑客似乎不再工作了。我不得不在build.gradle(app)中将compileSdk从30提高到31,正如这个答案中提到的stackoverflow.com/a/69283902/624814SMBiggs 2021-12-06
在Arctic Fox上不再工作了。安卓开发是一个如此痛苦的@$$。Udayaditya Barua 2021-12-11
当用新安装的IntelliJ IDEA从头开始创建一个默认的Android项目时,它甚至不能工作了。他们从一个伟大的工具变成了无法使用的东西。RedGlyph 2021-12-31
#3楼
得票数 64

这个问题最常出现在那些声明了

implementation androidx.core:core-ktx:1.7.0-beta01

minCompileSdk是31,但minSdkVersion明显更低。

增加你的项目的compileSdk就足以解决这个问题。不需要重写,甚至不需要改变targetSdk

android {
    compileSdk 31

...
}
Abandoned Cart 提问于2021-09-22
Abandoned Cart 修改于2022-05-14
很好的答案。这是关于这个问题的正确解决方案。为了解决这个问题,我们可以充分改变编译系统。如果我们改变了targetSdk,就会产生一些其他的问题,这不是解决这个问题所需要的。Mohamed Ibrahim 2022-01-04
这个答案解决了我的问题。Gautham Vijayan 2022-05-13
我同意@MohamedIbrahim的观点,仅增加compileSdkVersion就足以解决这个问题。因此,这是最好的解决方案ThinkAndCode 2022-06-29
@JCutting8 不是每一个解决方案都适用于每一个用例,这就是为什么SO可以选择提交一个以上的答案,即使一个答案已经被接受。祝你找到适合你的方案。Abandoned Cart 2022-07-04
@DirkSchumacher 文件夹名称可能有所不同。它是任何build.gradle文件属于根settings.gradle中列出的包含的文件夹。这个问题特别问到了31,但这只是包括所有模块和库的最新API。在你的情况下,就是32。Abandoned Cart 2022-09-13
#4楼
得票数 44

最后,我可以解决我的问题了。

问题出在哪里呢?

我在一个模块中有以下依赖 -

implementation "androidx.core:core-ktx:+"

但其他模块,包括应用程序模块,都有以下依赖关系

implementation "androidx.core:core-ktx:1.6.0"

转换

implementation "androidx.core:core-ktx:+"

implementation "androidx.core:core-ktx:1.6.0"

解决了我的问题。

Saiful Islam Sajib 提问于2021-09-03
Peter Mortensen 修改于2022-01-01
对我来说,一旦我清除了"+",它就会建议使用1.6.0版本,然后用这个版本进行编译。所以我认为你应该检查自动建议,然后使用这个值。tickietackie 2021-09-17
@tickietackie 这就对了,我也是。Code with Benji 2022-07-28
这很有效!谢谢你!谢谢你们!谢谢你们!我花了很多时间来解决这个问题。EJK 2022-11-12
#5楼
得票数 13

你需要将你的编译SDK更新到31。它听起来好像目前是设置为30。在你的Gradle文件中,android块中应该有类似compileSdk的东西。

把它升到31。如果由于某种原因这是一个问题,你也可以把你的依赖性降低到不需要该编译SDK版本的版本。

Nathan K 提问于2021-09-02
Peter Mortensen 修改于2022-01-01
有什么其他解决办法吗?我不能这样做,因为这样做后,一些依赖关系会中断。Rohit Aggarwal 2021-09-03
面临同样的问题......有什么办法能让我的编译SDK版本保持在30版本?Saiful Islam Sajib 2021-09-03
使用实现"androidx.core:core-ktx:1.3.0".androidx.core:1.3.0。Islam Alshnawey 2021-09-13
#6楼
得票数 11

我在一个 react-native 项目上遇到了这个问题,几天前还在工作,突然间就出现了这个错误。

* What went wrong:
Execution failed for task ':app:checkDevDebugAarMetadata'.
> Multiple task action failures occurred:
   > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
      > The minCompileSdk (31) specified in a
        dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
        is greater than this module's compileSdkVersion (android-30).
        Dependency: androidx.core:core-ktx:1.7.0-alpha02.
        AAR metadata file: /Users/me/.gradle/caches/transforms-2/files-2.1/ed22ee8b86d25659bbef1e9ee203b75c/jetified-core-ktx-1.7.0-alpha02/META-INF/com/android/build/gradle/aar-metadata.properties.
   > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
      > The minCompileSdk (31) specified in a
        dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
        is greater than this module's compileSdkVersion (android-30).
        Dependency: androidx.core:core:1.7.0-alpha02.
        AAR metadata file: /Users/me/.gradle/caches/transforms-2/files-2.1/23234efc7e9de9bfe6a3fea85a6072ef/core-1.7.0-alpha02/META-INF/com/android/build/gradle/aar-metadata.properties.

看完错误信息后,我明白是androidx.core:core-ktx的问题,于是我又搜索了一下,发现去年9月01日刚刚发布了一个新的版本https://androidx.tech/artifacts/core/core-ktx/,该版本是https://androidx.tech/artifacts/core/core-ktx/1.7.0-alpha02,其中有targetSdkVersion = 31的问题。

我运行了grep -r "androidx.core:core-ktx" node_modules,发现我有一个依赖关系有implementation "androidx.core:core-ktx:+",当我安装应用程序时,会安装最新的版本。我不能直接更新到31,因为这似乎会破坏我的一些依赖的代码,我会得到。

unrecognized Attribute name MODULE (class com.sun.tools.javac.util.SharedNameTable$NameImpl)

我真的不知道如何解决,也找不到任何线索,这很可能是因为它是新的。

作为一种变通方法,在文件android/app/build.gradle

android {}区块之前添加以下区块。

configurations.all {
    resolutionStrategy { force 'androidx.core:core-ktx:1.7.0-alpha01' }
}

这样做之后,它对我来说是有效的。它将强制所有androidx.core:core-ktx变成1.7.0-alpha01

aprilmintacpineda 提问于2021-09-05
Peter Mortensen 修改于2022-01-01
我运行了grep -r "androidx.core:core-ktx" node_modules,没有得到任何输出。但我仍然得到这个错误。Rohit Aggarwal 2021-09-05
我刚刚在我的react-native项目上为android构建时遇到了这个错误,它不是由于androidx.core:core-ktx,而是由于androidx.browser:browser。这来自于库react-native-inappbrowser-reborn,它指定android包的版本为1+。在gradle同步后,androidx.browser版本1.4.0-alpha01被带入,导致这个错误。这里有一个修复建议 github.com/proyecto26/react-native-inappbrowser/issues/298Tin Nguyen 2021-09-18
值得一提的是,你收到的关于MODULE等的错误将在JDK11中解决,JDK8不能很好地与API31安卓sdk级别的系统配合。Mike Hardy 2021-11-04
#7楼
得票数 11

当使用Jetpack Compose导航时,我遇到这个问题......

我在使用androidx.navigation:navigation-compose:2.4.0-alpha07

所以我通过使用另一个版本解决了这个问题。

`androidx.navigation:navigation-compose:2.4.0-alpha06`
Mahdi nezam parast 提问于2021-09-07
Peter Mortensen 修改于2022-01-01
这个问题存在于alpha07和alpha08中。把它改成06就解决了我的问题。(我想用SDK 30来编译它,但从来没有版本需要SDK 31)ShadeToD 2021-09-09
降级版本不是一个好的解决方案。Viks 2022-06-01
#8楼
得票数 3

我也遇到了同样的问题,发现问题出在生命周期库上。

我从测试版中改了过来。

androidx.lifecycle:lifecycle-livedata:2.4.0beta1

到当前的稳定版本。

androidx.lifecycle:lifecycle-livedata:2.3.1

检查安卓网站上的版本

Paul Kunda 提问于2021-09-18
Peter Mortensen 修改于2022-01-01
现在,即使是新的稳定版2.4.0也出现了这样的错误。Udayaditya Barua 2021-11-22
这是在不增加编译版本的情况下唯一对我有效的解决方案。谢谢Oguz Ozcan 2021-12-08