You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级androidx.appcompat:appcompat:1.5.0遇重复类错误,求解决方案

解决appcompat:1.5.0引入后出现的Duplicate class编译错误

问题场景

使用Android Studio Chipmunk | 2021.2.1 Patch 2,将项目中的androidx.appcompat:appcompat从1.4.2升级到1.5.0时,触发以下编译错误:

Duplicate class androidx.lifecycle.ViewModelLazy found in modules lifecycle-viewmodel-2.5.0-runtime(androidx.lifecycle:lifecycle-viewmodel:2.5.0)和lifecycle-viewmodel-ktx-2.3.1-runtime(androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1);Duplicate class androidx.lifecycle.ViewTreeViewModelKt found in modules lifecycle-viewmodel-2.5.0-runtime(androidx.lifecycle:lifecycle-viewmodel:2.5.0)和lifecycle-viewmodel-ktx-2.3.1-runtime(androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1)

回退到1.4.2版本后项目可正常编译,当前项目build.gradle配置如下:

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.halil.ozel.darkmode"
        minSdk 28
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled 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 {
        dataBinding true
    }
}

dependencies {
    implementation 'androidx.core:core-ktx:1.8.0'
    implementation 'androidx.appcompat:appcompat:1.4.2'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'

    // Preference
    implementation "androidx.preference:preference-ktx:1.2.0"
}

问题原因

  • androidx.appcompat:appcompat:1.5.0内部依赖了androidx.lifecycle:lifecycle-viewmodel:2.5.0
  • 项目中的androidx.preference:preference-ktx:1.2.0依赖了旧版本的androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1
  • 两个版本的Lifecycle库包含相同类的定义,导致编译时冲突

解决方案

方案1:强制统一Lifecycle依赖版本

在app模块的build.gradle中,添加版本强制策略,让所有依赖使用同一个Lifecycle版本:

// 添加在dependencies块上方
configurations.all {
    resolutionStrategy {
        force 'androidx.lifecycle:lifecycle-viewmodel:2.5.0'
        force 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0'
    }
}

dependencies {
    // 升级appcompat到1.5.0
    implementation 'androidx.appcompat:appcompat:1.5.0'
    // 其他依赖保持不变
    implementation 'androidx.core:core-ktx:1.8.0'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation "androidx.preference:preference-ktx:1.2.0"
}

方案2:升级冲突的依赖到兼容版本

将androidx.preference:preference-ktx升级到依赖Lifecycle 2.5.0的版本(比如1.3.0),这样依赖版本自然对齐:

dependencies {
    implementation 'androidx.appcompat:appcompat:1.5.0'
    implementation 'androidx.core:core-ktx:1.8.0'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    // 升级preference-ktx到1.3.0
    implementation "androidx.preference:preference-ktx:1.3.0"
}

方案3:排除冲突依赖(不推荐)

如果暂时无法升级其他依赖,可以在引入appcompat时排除自带的Lifecycle依赖,手动指定旧版本:

dependencies {
    implementation('androidx.appcompat:appcompat:1.5.0') {
        exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel'
    }
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
    // 其他依赖保持不变
    implementation 'androidx.core:core-ktx:1.8.0'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation "androidx.preference:preference-ktx:1.2.0"
}

注意:此方案可能引发appcompat与旧版本Lifecycle的兼容性问题,仅作为临时 workaround 使用。

验证方法

执行./gradlew app:dependencies(或在Android Studio的Gradle面板中选择app > Tasks > android > androidDependencies)查看依赖树,确认所有Lifecycle相关依赖版本统一后,重新编译项目即可。

内容的提问来源于stack exchange,提问作者Halil Ozel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 03:48:15