jetpack compose 1.5的minCompileSDK API level 34吗?

gal*_*gus 26 android android-gradle-plugin android-jetpack-compose

最近 Jetpack Compose 1.5 发布,使用 compose POM 添加依赖项

implementation(platform("androidx.compose:compose-bom:2023.08.00"))

或直接使用

implementation("androidx.compose.ui:ui:1.5.0")

使用compileSDK = 33的项目会导致两个依赖问题

  1. 依赖项“androidx.emoji2:emoji2-views-helper:1.4.0”需要依赖它的库和应用程序才能针对版本 34 或更高版本的 Android API 进行编译。
  2. 依赖项“androidx.emoji2:emoji2:1.4.0”需要依赖它的库和应用程序针对版本 34 或更高版本的 Android API 进行编译。

使用 API SDK 34 目前是不可能的,因为没有公开版本的 android gradle 插件支持它,其次 API 34 仍处于测试阶段。

由于我不在任何地方直接使用 emoji2 依赖项,因此可以使用类似于以下内容的 build.gradle.kts 来修复此问题。

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
}

android {
    namespace = "com.example.myapplication"
    compileSdk = 33

    defaultConfig {
        configurations.all {
            resolutionStrategy {
                force("androidx.emoji2:emoji2-views-helper:1.3.0")
                force("androidx.emoji2:emoji2:1.3.0")
            }
        }
        applicationId = "com.example.myapplication"
        minSdk = 24
        versionCode = 1
        versionName = "1.0"

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

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
    buildFeatures {
        compose = true
    }
    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.1"
    }
    packaging {
        resources {
            excludes += "/META-INF/{AL2.0,LGPL2.1}"
        }
    }
}

dependencies {

    implementation("androidx.core:core-ktx:1.10.1")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
    implementation("androidx.activity:activity-compose:1.7.2")
    implementation(platform("androidx.compose:compose-bom:2023.08.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.ui:ui-graphics")
    implementation("androidx.compose.ui:ui-tooling-preview")
    implementation("androidx.compose.material3:material3:1.1.1")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
    androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00"))
    androidTestImplementation("androidx.compose.ui:ui-test-junit4")
    debugImplementation("androidx.compose.ui:ui-tooling")
    debugImplementation("androidx.compose.ui:ui-test-manifest:1.5.0")
}
Run Code Online (Sandbox Code Playgroud)

这是解决此问题的最佳方法吗?这是否是一个依赖项错误,因为所有依赖项都标记为稳定,但其中一个依赖项依赖于 beta SDK。顺便说一句,emoji2 依赖项被标记为需要 14 的 minSdkVersion,而不是 34。

当我创建这个问题时,其他人在 google tracker 上创建了以下问题,我在 Kotlin 插件版本 1.8.20 中也遇到了这个问题。

https://issuetracker.google.com/issues/295457468

Chi*_*mar 10

对于某些较新的库版本,您必须使用最新的 CompileSDK 版本。将以下代码添加build.gradle(app-level)defaultConfig.

android {
 defaultConfig {
        ...
        compileSdkPreview = "UpsideDownCake"
        ...
    }
Run Code Online (Sandbox Code Playgroud)

}