如何解决本机 java/kotlin 中依赖项的 AAR 元数据中指定的 minCompileSdk (31) 错误?

Xee*_*ami 8 java error-handling kotlin

在依赖项的 AAR 元数据 (META-INF/com/android/build/gradle/aar-metadata.properties) 中指定的 minCompileSdk (31) 大于此模块的 compileSdkVersion (android-30)。依赖:androidx.core:core-ktx:1.7.0-alpha02。AAR 元数据文件:C:\Users\mohammad.zeeshan1.gradle\caches\transforms-2\files-2.1\a20beb0771f59a8ddbbb8d416ea06a9d\jetified-core-ktx-1.7.0-alpha02\META-INF\com\android\build \aar-metadata.properties。

Cop*_*oad 261

在您的文件中将compileSdkVersion和设置targetSdkVersion为。31build.gradle(app)

android {
    compileSdkVersion 31 // <-- This
    defaultConfig {
        applicationId "com.example.app"
        targetSdkVersion 31 // <-- and this too
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 检查此库:实现“androidx.appcompat:appcompat:1.4.0”更改为 1.3.1 版本。并用 resolutionStrategy {force 'androidx.core:core:1.6.0' } 进行了修复。 (7认同)
  • 我将其更改为 31 后,Gradle 构建失败。 (7认同)
  • 将编译 SDK 版本更改为 31 对我有用 (4认同)

Aba*_*art 80

这个问题最常见于声明的库

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

minCompileSdk31,但minSdkVersion明显较低。

增加compileSdk项目的规模足以解决问题。无需覆盖甚至更改targetSdk.

android {
    compileSdk 31

...
}
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案。这是关于此问题的正确解决方案。为了解决这个问题,我们可以改变编译sdk就足够了。如果我们更改 targetSdk,它会带来一些其他问题,但不需要修复此问题。 (2认同)

Sai*_*jib 46

终于,我可以解决我的问题了。

问题出在哪里?

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

implementation "androidx.core:core-ktx:+"
Run Code Online (Sandbox Code Playgroud)

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

implementation "androidx.core:core-ktx:1.6.0"
Run Code Online (Sandbox Code Playgroud)

转换

implementation "androidx.core:core-ktx:+"
Run Code Online (Sandbox Code Playgroud)

implementation "androidx.core:core-ktx:1.6.0"
Run Code Online (Sandbox Code Playgroud)

解决了我的问题。

  • 对我来说,当我清除“+”后,它就建议使用 1.6.0 版本,然后用该版本进行编译。所以我认为你应该检查自动建议并使用这个值。 (3认同)

小智 16

您需要将编译 SDK 更新为 31。听起来目前设置为 30。在您的 Gradle 文件中应该有类似块compileSdk中的内容android

将其提高到 31。如果由于某种原因出现问题,您还可以将依赖项降低到不需要编译 SDK 版本的版本。

  • 还有其他解决办法吗?我无法执行此操作,因为执行此操作后某些依赖项会中断。 (4认同)
  • 面临同样的问题..有什么解决方案可以保持我的编译 sdk 版本 30 吗? (3认同)

apr*_*eda 15

我在几天前运行的一个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.
Run Code Online (Sandbox Code Playgroud)

阅读错误消息后,我明白了问题所在,androidx.core:core-ktx所以我搜索了更多相关信息,发现去年 9 月 1 日刚刚发布了新版本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)
Run Code Online (Sandbox Code Playgroud)

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

作为解决方法,已存档android/app/build.gradle

在块之前添加以下块android {}

configurations.all {
    resolutionStrategy { force 'androidx.core:core-ktx:1.7.0-alpha01' }
}
Run Code Online (Sandbox Code Playgroud)

这样做之后,它对我有用。它将迫使所有人androidx.core:core-ktx成为1.7.0-alpha01

  • 我刚刚在我的react-native项目上构建android时遇到了这个错误,这不是由于`androidx.core:core-ktx`而是由于`androidx.browser:browser`。它来自库 `react-native-inappbrowser-reborn`,它指定 android 包版本为 1+。gradle 同步后,引入了“androidx.browser”版本 1.4.0-alpha01,导致此错误。这里建议修复https://github.com/proyecto26/react-native-inappbrowser/issues/298 (6认同)
  • 我运行了 `grep -r "androidx.core:core-ktx" node_modules` 并没有得到任何输出。我仍然收到此错误。 (2认同)

小智 13

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

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

所以我用另一个版本解决了这个问题:

`androidx.navigation:navigation-compose:2.4.0-alpha06`
Run Code Online (Sandbox Code Playgroud)


Xee*_*ami 6

我找到了解决方案,请在应用程序 Gradle 文件中的包上输入上面这行代码。

configurations.all {
resolutionStrategy { force 'androidx.core:core-ktx:1.6.0' }
Run Code Online (Sandbox Code Playgroud)

}在此处输入图片说明

  • 对于北极狐来说,这种技巧似乎不再有效。我必须在 build.gradle (应用程序)中将compileSdk从30提高到31,如本答案/sf/answers/4849873171/中所述。 (7认同)
  • 我在 ReactNative 上仍然遇到同样的问题。添加这一行在我的项目中没有成功。有更多的方法来解决这个问题吗? (4认同)
  • 不再适用于北极狐。Android 开发对于 @$$ 来说真是一个痛苦的事情。 (4认同)
  • 当使用新安装的 IntelliJ IDEA 从头开始​​创建默认 Android 项目时,它甚至不再起作用。它们从一个伟大的工具变成了无用的东西。 (2认同)