這個錯誤:
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
不是 multidex 問題,而是 AGP 8.x 默認開啓了“檢查重複類”,你的 APK 裏出現了 完全相同的類(全限定名一致)來自不同 JAR/AAR,導致構建失敗。
✅ 快速定位重複類
方法 1:Gradle 自帶報告(推薦)
./gradlew app:assembleDebug --info \
| grep -i "duplicate"
或
./gradlew app:assembleDebug --stacktrace
在 Build Output 面板裏會打印出類似:
Duplicate class kotlin.collections.ArraysKt found in modules
kotlin-stdlib-1.9.10 (org.jetbrains.kotlin:kotlin-stdlib:1.9.10)
kotlin-stdlib-jdk8-1.9.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10)
方法 2:用 Gradle 任務
./gradlew app:checkDebugDuplicateClasses
失敗時會列出所有衝突座標。
✅ 常見場景 & 解決清單
| 場景 | 解決方式 |
|---|---|
| Kotlin 重複 | 只保留 kotlin-stdlib-jdk8,把老的 kotlin-stdlib 排除掉:implementation('xxx') { exclude group:'org.jetbrains.kotlin', module:'kotlin-stdlib' } |
| AndroidX / Support 混用 | 全部遷移到 AndroidX,禁止再依賴任何 com.android.support:* 庫。 |
| 三方 SDK 內部打包了 support | 用 exclude 或 pickFirsts 見下方代碼。 |
自己 implementation project(':libA') 和 libB 都含 com.foo.Bean |
把公共部分抽成獨立模塊,或重命名包(jarjar / relocate)。 |
✅ 一鍵“先跑起來”的應急方案(不推薦長期)
在 app/build.gradle 裏 忽略重複類(僅本地調試,上架前必須根治):
android {
packagingOptions {
pickFirsts += [
'META-INF/DEPENDENCIES',
'META-INF/LICENSE',
'META-INF/LICENSE.txt',
'META-INF/NOTICE',
'META-INF/NOTICE.txt'
]
// 把具體重複類也 pickFirst(按日誌里名字寫)
pickFirsts += 'kotlin/annotations/JvmPlatformAnnotationsKt.class'
}
}
⚠️ 這隻能讓構建通過,運行時仍可能
NoSuchMethodError或ClassCastException,務必後續排除真正的重複依賴。
✅ 根治模板(示例)
假設日誌提示:
Duplicate class okhttp3.internal.Util
in modules okhttp3-3.14.9 and okhttp-2.7.5
做法:
configurations.all {
exclude group: 'com.squareup.okhttp', module: 'okhttp' // 老版本
}
// 只保留 3.x
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
✅ 步驟小結
./gradlew app:checkDebugDuplicateClasses找出重複類。- 根據座標 exclude 或 升級/統一 到同一個版本。
- 確認無重複後再
./gradlew app:assembleDebug。 - 別長期用
pickFirsts當“萬能膏藥”,否則線上隨時爆炸。
按以上操作,就能把 CheckDuplicatesRunnable 錯誤徹底消滅。祝你編譯一路綠燈!
Android推薦閲讀
Cannot fit requested classes in a single dex file (# methods: 93047 > 65536) 【Android】開發者模式啓用
開發工具鏈推薦
API開發工具postman、國內xxapi和SmartApi的性能對比
健康雜談
【論健康】怎麼才算健康(健康的本質) 【論健康】健康的不可能三角