1、问题描述
最近把gradle升级到了7.4版本,然后新创建一个应用,直接构建报Duplicate class错误,具体如下:
Duplicate class androidx.lifecycle.ViewModelLazy found in modules lifecycle-viewmodel-2.5.0-runtime (androidx.lifecycle:lifecycle-viewmodel:2.5.0) and 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) and lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1)
2、解决方案
查看发现是7.4版的gradle初始化应用时部分库使用了最新版本导致了类的重复导入,其实自己手动去升级这几个库也会导致同样的问题。
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.7.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
因此可以将对应的库降低版本或者导入时去掉重复的类:
dependencies {
configurations {
all {
//在这个例子中,exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel-ktx' 的意思是排除 androidx.lifecycle:lifecycle-viewmodel-ktx 这个库的依赖。
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel-ktx'
}
}
implementation 'androidx.appcompat:appcompat:1.5.0'
implementation 'com.google.android.material:material:1.7.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
}
移除的jar包
//lifecycle
api 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0'
// viewModel
api "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0"
网友评论