Android Jetpack Compose项目构建时CheckDuplicatesRunnable错误求助
构建Jetpack Compose项目时,连续三天卡在以下构建错误上:
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
此前项目构建正常,直到引入FusedLocationProviderClient、LocationRequest、LiveData等定位相关类后出现该问题。根据资料,这类错误通常由同一库的不同版本冲突导致,Android生态的废弃机制使得不同版本间方法、属性差异极大,排查起来十分棘手。
项目的build.gradle.kts代码如下:
plugins { alias(libs.plugins.android.application) alias(libs.plugins.jetbrains.kotlin.android) } android { namespace = "com.albertoalvarezportero.autocontrol" compileSdk = 34 defaultConfig { applicationId = "com.albertoalvarezportero.autocontrol" minSdk = 24 targetSdk = 34 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(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.ui) implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) implementation(libs.play.services.location) implementation(libs.compose.preview.renderer) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) //Lifecycle ViewModel implementation(libs.androidx.lifecycle.viewmodel.compose){} // Correct ViewModel dependency implementation(libs.androidx.runtime.livedata) // For LiveData in Compose }
解决方案步骤
排查依赖冲突
执行Gradle命令查看完整依赖树,定位重复引入的库:./gradlew app:dependencies重点关注
androidx.lifecycle和com.google.android.gms:play-services-location相关依赖,这两类是引入定位功能后新增的,大概率是冲突来源。统一Lifecycle依赖版本
项目使用了版本目录(libs.versions.toml),需确保所有androidx.lifecycle相关依赖使用同一版本。在libs.versions.toml中设置统一版本:[versions] androidx-lifecycle = "2.6.2"然后在
libs.versions.toml的[libraries]块中,将所有lifecycle依赖指向该版本:[libraries] androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidx-lifecycle" } androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } androidx-runtime-livedata = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "androidx-lifecycle" }排除Play Services Location的冲突依赖
如果play-services-location引入了旧版本的lifecycle库,可在依赖声明中排除冲突组:implementation(libs.play.services.location) { exclude(group = "androidx.lifecycle") }清理重建项目
执行清理命令后重启Android Studio,再重新构建:./gradlew clean
内容的提问来源于stack exchange,提问作者Alberto

