Android 应用程序不会构建——在依赖项的 androidx.work:work-runtime:2.7.0-beta01 中指定的 minCompileSdk (31)
Posted
技术标签:
【中文标题】Android 应用程序不会构建——在依赖项的 androidx.work:work-runtime:2.7.0-beta01 中指定的 minCompileSdk (31)【英文标题】:Android app won't build -- The minCompileSdk (31) specified in a dependency's androidx.work:work-runtime:2.7.0-beta01 【发布时间】:2021-11-01 08:32:41 【问题描述】:我正在尝试在我的 M1 中构建一个项目,
但是当我运行npx react-native run-android
时出现这个错误
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> 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.work:work-runtime:2.7.0-beta01.
AAR metadata file: /Users/macpro/.gradle/caches/transforms-3/999e9d813832e06d8f1b7de52647a502/transformed/work-runtime-2.7.0-beta01/META-INF/com/android/build/gradle/aar-metadata.properties.
Android/build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript
ext
buildToolsVersion = "30.0.0"
minSdkVersion = 21
compileSdkVersion = 30
targetSdkVersion = 30
supportLibVersion = "28.0.0"
repositories
google()
jcenter()
dependencies
classpath('com.android.tools.build:gradle:4.1.2')
classpath('com.google.gms:google-services:4.3.0')
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
allprojects
repositories
mavenLocal()
maven
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
maven
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
google()
jcenter()
maven url 'https://www.jitpack.io'
gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
【问题讨论】:
【参考方案1】:由于您的依赖项之一在内部使用今天发布的WorkManager 2.7.0-beta01(需要 API 31),因此导致错误。就我而言,它是CheckAarMetadata.kt
。
您可以通过强制 Gradle 对适用于 API 30 的传递依赖项使用旧版本的 Work Manager 来修复它。在您的 build.gradle
文件中添加:
dependencies
def work_version = "2.6.0"
// Force WorkManager 2.6.0 for transitive dependency
implementation("androidx.work:work-runtime-ktx:$work_version")
force = true
这应该可以解决它。
【讨论】:
找不到参数的方法 implementation(),当我在依赖项中添加此错误时出现此错误 在./android/app/build.gradle的底层依赖中添加***.com/users/10257053/hamrosvet所说的 谢谢兄弟。我也这样做,问题解决了 你也可以看看this issue吗? 如果你的目标是 29,你必须使用版本“2.5.0” - 谢谢【参考方案2】:这是因为在 work-runtime:2.7.0-beta01
中,compileSdkVersion
已更新为 31
您可以将您的 compileSdkVersion
更新为 31
或使用不包含此更改的旧版本 work-runtime
在2.7.0-beta01
版本的release notes中有提到
注意:面向 Android 12 (S) 的应用需要 WorkManager 版本 2.7.0。
例如,将此添加到您的 build.gradle
应该可以修复它
api(group: "androidx.work", name: "work-runtime")
version
strictly "2.7.0-alpha04"
【讨论】:
这是一个非常适合我的解决方案! 我将此代码添加到android/app/build.gradle
,但我收到此错误Could not find method api() for arguments [group=androidx.work, name=work-runtime, build_74rkif87yhr4w7r5wrv07bc5g$_run_closure4@1de27f2c] on project ':app' of type org.gradle.api.Project.
我将此添加到依赖项的末尾 ...... api(group: "androidx.work", name: "work-runtime") version 严格的 "2.7.0-alpha04" 并且有效
接受的解决方案对我不起作用 - 但我指的是颤动方面。然后我遇到了另一个在这里提到并解决的问题:***.com/a/60311131/12051755【参考方案3】:
我遇到了同样的问题,我可以通过更改依赖项中的 appcompat 版本来解决它 我有什么:
implementation 'androidx.appcompat:appcompat:1.4.0'
我改成:
implementation 'androidx.appcompat:appcompat:1.3.1'
请注意,我使用的是 java。
【讨论】:
【参考方案4】:对于那些在过去 36 小时内面临以下错误的其他人(由于 androidx-core 的更新):
错误:
> 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.
您可以尝试强制使用 androidx 到旧版本:
将其放在 android/app/build.gradle 下(最好在依赖项 下或在 android 之外)
configurations.all
resolutionStrategy force 'androidx.core:core-ktx:1.6.0'
【讨论】:
Here 是我的错误,这并不能解决这个问题。 @Rohit 我想,这是因为你错过了添加configurations.all resolutionStrategy force 'androidx.core:core-ktx:1.6.0'
并且只添加了:implementation "androidx.core:core-ktx:1.6.0"
谢谢解决了我的问题。我还必须添加 androidx.browser:browser:1.2.0【参考方案5】:
我遇到了同样的事情,但实际上是由我升级到版本 2.7.0 的工作管理器依赖引起的 我只是将其降级回 2.6.0
dependencies
implementation 'androidx.work:work-runtime-ktx:2.6.0'
【讨论】:
【参考方案6】:我的项目中也遇到了同样的问题,现在这个问题正在解决。问题是由于依赖androidx.work:work-runtime
但我想首先提一下,我并没有直接在我的项目中使用该依赖项(未添加到我的应用级别 gradle 中),可能是其他一些依赖项在内部使用。
所以我所做的就是通过添加这个来强制降级它的版本
configurations.all
resolutionStrategy force 'androidx.work:work-runtime:2.6.0'
里面
android
defaultConfig
//here
它解决了我的问题。
【讨论】:
【参考方案7】:查看消息
你可以看到指定minCompileSdk (31)
的模块
Dependency: androidx.appcompat:appcompat:1.4.0.
要暂时解决此问题,您必须将定义为 build.gradle
的依赖项降级,例如从 appcompat:1.4.0
降级为 appcompat:1.3.0
:
dependencies
implementation 'androidx.appcompat:appcompat:1.3.0'
...
...
...
/* 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.appcompat:appcompat:1.4.0. */
【讨论】:
感谢@Jorgesys,及时! 感谢您节省我的时间!!【参考方案8】:在我的flutter应用中,修改了android\app\build.gradle中的compileSdkVersion和targetSdkVersion
android
compileSdkVersion 31 // Changed to 31
sourceSets
main.java.srcDirs += 'src/main/kotlin'
defaultConfig
applicationId "com.example.blah_blah"
minSdkVersion 16
targetSdkVersion 31 //Changed to 31
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
buildTypes
release
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
另外,在 android\build.gradle 中将 kotlin 版本更改为 '1.6.10'
buildscript
ext.kotlin_version = '1.6.10' //change here
repositories
google()
jcenter()
dependencies
classpath 'com.android.tools.build:gradle:4.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
【讨论】:
我将 compileSdkVersion 和 targetSdkVersion 更改为 31,它解决了错误。谢谢【参考方案9】:我的项目中的某些内容自动更新导致级联效果。首先它给出了错误,我在定位 SDK 31 时有 intent-filter
s 缺少 android:export="true/false"
。但我的目标是为 SDK 30 设置的。然后我将目标设置为 SDK 31 导致更多问题。所以我放弃了它们……但由于设置为 SDK 31,其他依赖项试图使用 BETA 版本而不是稳定版本。
就我而言,在回滚到 SDK 30 后,我开始收到类似于 OP minCompileSdk (31) specified in a dependency's androidx.appcompat:appcompat-resources:1.4.0-beta01
的错误 - appcompat 的稳定版本是 1.3.1。
在我的 /<project>/platforms/android/project.properties
文件中,我的 appcompat 依赖项设置为:
cordova.system.library.19=androidx.appcompat:appcompat:1+
这导致版本1.4.0-Beta01
被更新/加载。所以我不得不把它钉回到:
cordova.system.library.19=androidx.appcompat:appcompat:1.3.1
【讨论】:
【参考方案10】:要解决此问题,请按照以下步骤操作
在 android studio 中进入 SDK manager 并安装“Android api 31”
转到 build.gradle 文件并更改 complie SDK version 'x' 以编译 SDK 版本 31 并将目标 SDK 版本也更改为 31
现在同步
转到 manifest.xml 并将此行写入与意图过滤器链接的活动内部 '机器人:出口=“真” 现在构建项目。肯定能解决这个问题
【讨论】:
【参考方案11】:我改变了这个
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.0'
到这里
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
它对我有用,我也在使用 Kotlin
【讨论】:
【参考方案12】:就我而言,对我有用的是将 compileSdk 版本更改为 31
【讨论】:
【参考方案13】:在我的情况下,模块的版本在其版本控制上有+,指定适合您的sdk版本的版本将解决它
我在一个模块中有以下依赖项-
implementation "androidx.core:core-ktx:+"
但其他模块包括 app 模块具有以下依赖关系
implementation "androidx.core:core-ktx:1.6.0"
您需要将 + 更改为版本
implementation "androidx.core:core-ktx:+" ->
implementation "androidx.core:core-ktx:1.6.0"
【讨论】:
【参考方案14】:我遇到了同样的错误,当我修改以下内容时它起作用了:
implementation 'androidx.core:core-ktx:1.7.0' and `api 'com.google.android.material:material:1.4.0-alpha07'`
到
implementation 'androidx.core:core-ktx:1.6.0' and api 'com.google.android.material:material:1.4.0-alpha06'
【讨论】:
【参考方案15】:我遇到了类似的问题,我更新了一个 Gradle 脚本并解决了问题;
// build.gradle (Module:testApp)
android
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig
applicationId "myproject.name.testApp"
minSdkVersion 16 // <--- must be same as under dependencies section
targetSdkVersion 30
versionCode 1
versionName "1.0"
dependencies
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.6.0' // <--- Was showing 1.7, it fix problem
implementation 'androidx.appcompat:appcompat:1.3.1'
【讨论】:
【参考方案16】:当我使用 ViewModel
和 LiveData
从模板创建活动时,我遇到了同样的问题 the minCompileSdk (31) specified in a dependency's AAR metadata
,它添加了最新版本的依赖项,例如
然后我将版本降级为1.6.0
as
【讨论】:
【参考方案17】:我在一个喷气背包组合项目中也有这个问题。 我正在使用分页,问题是因为分页和其他一些依赖项。
我可以改用以下版本的分页来解决这个问题:
implementation "androidx.paging:paging-compose:1.0.0-alpha10"
我用以下内容替换了旧的依赖项:
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
implementation 'androidx.activity:activity-compose:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
【讨论】:
【参考方案18】:变化
implementation 'androidx.core:core-ktx:1.7.0'
到
implementation 'androidx.core:core-ktx:1.6.0'
为我工作。
【讨论】:
【参考方案19】:另请注意,在以下情况下,最新的 Google Ads SDK 依赖项(当前为 v20.5.0)可能会导致 minCompileSDK (31)
错误:
compileSDK
和 targetSDK
build.gradle
的 implementation
部分中包含的 Google Ads(或任何)依赖项版本旨在用于针对 API 31/Android 12 编译的应用
例如,您的 build.gradle 可能包含:
compileSdkVersion 29
targetSdkVersion 29
implementation 'com.google.android.gms:play-services-ads-lite:20.5.0'
正如其他答案中提到的那样,解决此问题的方法是您需要应用force resolutionStrategy
以确保androidx.work:work-runtime
和androidx.core:core-ktx
的最新版本不被选为所需的构建依赖项。
以下对我有用
configurations.all
resolutionStrategy force 'androidx.work:work-runtime:2.6.0'
resolutionStrategy force 'androidx.core:core-ktx:1.6.0'
注意:迁移到针对 API 31 进行编译后,应删除 resolutionStrategy
行以确保您使用的是最新版本的核心 Android 平台依赖项
【讨论】:
【参考方案20】:我遇到了这个问题,并且没有从任何 Stack Overflow 线程中得到解决方案。禁用 Hyper V 并运行基本诊断仍然没有帮助。每次我尝试运行我的虚拟机时都会收到停止代码。
我通过进入 SDK 管理器并更新 SDK 平台和 SDK 工具解决了这个问题。首先从工具菜单打开 SDK 管理器,然后在平台/工具窗格中单击带有连字符的每个选项以更改为复选标记,点击应用并接受更改。停止代码对我来说消失了。
【讨论】:
【参考方案21】:因为你用的是gradle>7.0,所以可以chan gradle-6.7.1-all 和 com.android.tools.build:gradle:4.0.0。 :3
【讨论】:
【参考方案22】:过去几周我遇到了同样的问题,现在在 2021 年 12 月的第一周,31 的官方 sdk 发布了,
现在将 compilesdk 更改为 31,将 targetsdk 更改为 30
从android studio下载最新的sdk,
-
单击工具 > SDK 管理器。
在 SDK 平台选项卡中,选择 Android 12。
在 SDK Tools 选项卡中,选择 Android SDK Build-Tools 31。
点击确定安装 SDK。
最新的lib要31的compilesdk,
执行此操作后,所有问题都解决了。
【讨论】:
以上是关于Android 应用程序不会构建——在依赖项的 androidx.work:work-runtime:2.7.0-beta01 中指定的 minCompileSdk (31)的主要内容,如果未能解决你的问题,请参考以下文章
Android 应用无法构建——依赖:androidx.work:work-runtime:2.7.0-beta01
如何在不是Visual Studio c中的依赖项的构建中包含项目#
由于未能构建依赖项的发布版本,Maven 发布构建在 Jenkins 中失败
在 Jenkins 构建期间动态添加 Android 项目依赖项