Flutter从3.0.5升级到3.3.10后Android构建失败求助
Flutter升级后Android构建出现androidx.lifecycle重复类的解决办法
2022年2月将Flutter升级至最新稳定版(此前项目已一年未升级),为适配要求Android编译版本33的新包同步升级了Flutter与Dart,执行以下步骤后Android构建失败:
flutter channel stableflutter upgradeflutter doctorflutter pub outdatedflutter pub upgrade --major-versionsflutter pub cache repairflutter clean && flutter pub getflutter build apk
报错信息:
Execution failed for task ':app:checkReleaseDuplicateClasses'. > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable > Duplicate class androidx.lifecycle.ViewModelLazy found in modules jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1) and lifecycle-viewmodel-2.5.1-runtime (androidx.lifecycle:lifecycle-viewmodel:2.5.1) Duplicate class androidx.lifecycle.ViewTreeViewModelKt found in modules jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1) and lifecycle-viewmodel-2.5.1-runtime (androidx.lifecycle:lifecycle-viewmodel:2.5.1) Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.
问题原因
不同依赖包引入了版本冲突的androidx.lifecycle库,旧版lifecycle-viewmodel-ktx:2.3.1与新版lifecycle-viewmodel:2.5.1中存在重复类,导致构建时冲突。
解决方案
定位冲突依赖来源
- 执行
flutter pub deps --style=compact,搜索lifecycle-viewmodel-ktx,找到引入旧版本库的第三方包。 - 或进入项目
android目录,执行./gradlew app:dependencies(Windows系统用gradlew.bat app:dependencies),查看更详细的Android端依赖树,精准定位冲突来源。
- 执行
强制统一依赖版本
在项目android/build.gradle的allprojects区块中添加版本强制配置,将所有lifecycle相关依赖统一到兼容版本(示例用2.5.1,可根据Flutter版本调整):allprojects { repositories { google() mavenCentral() } configurations.all { resolutionStrategy { force 'androidx.lifecycle:lifecycle-viewmodel:2.5.1' force 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1' } } }清理并重新构建
依次执行以下命令:flutter cleanflutter pub getflutter build apk
优先升级冲突依赖包
如果查到是某个第三方包依赖了旧版lifecycle库,优先升级该包到最新版本,多数情况下官方会修复依赖版本兼容问题。
内容的提问来源于stack exchange,提问作者Akshay Bengani
相关产品推荐
相关产品推荐

