因此,在我的项目中,Gradle不断地将我的Android作曲库(具体地说:‘androidx.active:active-compose’)推广到最新的1.8.0-alpha05版本.然而,这个版本需要compileSdk 34才能运行,而Gradle版本8.0.2似乎不支持它.

我的应用程序是build.gradle:

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id("com.google.dagger.hilt.android")
    id("com.google.devtools.ksp")
    id 'org.jetbrains.kotlin.plugin.serialization' version '1.8.20'
    id 'com.google.gms.google-services'
}

android {
    namespace 'com.my_app'
    compileSdk 33

    defaultConfig {
        applicationId "com.my_app"
        minSdk 21
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.debug
        }
    }

    applicationVariants.all { variant ->
        variant.addJavaSourceFoldersToModel(
                new File(buildDir, "generated/ksp/${variant.name}/kotlin")
        )
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_18
        targetCompatibility JavaVersion.VERSION_18
    }
    kotlinOptions {
        jvmTarget = '18'
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion '1.4.6'
    }
    packagingOptions {
        resources {
            excludes += '/META-INF/{AL2.0,LGPL2.1}'
        }
    }
}

dependencies {
    def exoPlayerVersion = "1.0.2"
    def room_version = "2.5.1"

    def composeBom = platform('androidx.compose:compose-bom:2023.05.01')
    implementation composeBom
    androidTestImplementation composeBom

    implementation 'androidx.core:core-ktx:1.10.1'
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'
    implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.1")
    implementation 'androidx.activity:activity-compose:1.7.2' // <-- the culprit
    implementation "androidx.compose.animation:animation-graphics"
    implementation 'androidx.compose.ui:ui'
    implementation 'androidx.compose.ui:ui-graphics'
    implementation 'androidx.compose.ui:ui-tooling-preview'
    implementation 'androidx.compose.material3:material3'
    implementation 'androidx.compose.foundation:foundation'
    implementation 'com.google.android.material:material:1.10.0-alpha04'
    implementation('org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1')

    // ... Other dependencies
}

投掷./gradlew checkDebugAarMetadata次:

> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
   > 3 issues were found when checking AAR metadata:

       1.  Dependency 'androidx.activity:activity-compose:1.8.0-alpha05' requires libraries and applications that
           depend on it to compile against version 34 or later of the
           Android APIs.

           :app is currently compiled against android-33.

           Also, the maximum recommended compile SDK version for Android Gradle
           plugin 8.0.2 is 33. // <-- this

       2.  Dependency 'androidx.activity:activity-ktx:1.8.0-alpha05' requires libraries and applications that
           depend on it to compile against version 34 or later of the
           Android APIs.

           // same comment above

       3.  Dependency 'androidx.activity:activity:1.8.0-alpha05' requires libraries and applications that
           depend on it to compile against version 34 or later of the
           Android APIs.

           // same comment above

我try 使用Gradle的解析策略,但似乎不起作用:

configurations.all {
    resolutionStrategy {
        force 'androidx.activity:activity-compose:1.7.2'
    }
}

推荐答案

由于您的依赖关系,您的androidx.activity版本正在升级:

implementation 'com.google.android.material:material:1.10.0-alpha04'

根据Material 1.10.0-alpha04 release notes,那个版本requires的androidX活动1.8.0-alpha05,compileSdkVersion的34.

如第this tweet节所述:

随着安卓14‘S API34的定稿,~所有新的Jetpack库版本都已经开始使用API34编译.这意味着您的应用程序还需要使用API 34进行编译.

因此,随着时间的推移,你可能会越来越多地遇到这种情况.

如果你还想not次使用API 34,你需要减少对material 的依赖来使用最新的1.9.0版本:

implementation 'com.google.android.material:material:1.9.0'

Android相关问答推荐

将Android Studio插件复制到离线网络

使用Kotlin/Compose与Java/XML指南的比较

每次重启Android时预填入Room数据库

如何将Unicode符号作为文本居中放置在布局中的按钮(Android XML)中?

为什么它显示我的空白屏幕?

为什么 Android Compose 将片段作为参数传递给 Composables 函数?

如何在同一行中滚动自定义布局和惰性列,就好像它们是一个组件一样

参数化类RecyclerView.Adapter的原始使用

如何在我的sqlite数据库中获取某个玩家的分数

我的自定义小吃店不适合我的全宽屏幕尺寸

将 CircularProgressIndicator 添加到按钮而不增加其高度

使用 Dagger Hilt 获取接口的所有实例

在 Jetpack Compose 中包装内容

每次在 Jetpack Compose 中调用导航

将房间中的实体更新为 isCompleted 并使用 Flow 问题获取所有数据

更新应用程序是否会取消对应用程序特定文件的权限?

react-native android项目未找到错误

Google Play 服务登录在 Unity Android 上无法正常运行

使用协程访问数据库

在使用 Retrofit 和 Room 时,我是否需要提及协程调度程序?