Flutter集成geolocator遇Kotlin版本冲突及build.gradle更新疑问
解决Flutter集成geolocator时的Kotlin版本不兼容与类重复问题
1. 确认geolocator所需的Kotlin版本
先明确geolocator包依赖的Kotlin版本——你可以查看pub.dev上该包的说明,或者直接查看本地项目中pubspec.lock里geolocator的依赖信息,找到它要求的Kotlin版本号(比如当前最新版可能要求1.8.x及以上)。
2. 修改项目根目录的build.gradle
Flutter项目的Kotlin版本配置在项目根目录的build.gradle文件中,而非android/app下的文件。如果你的文件里没有相关配置,手动添加或修改:
buildscript { // 指定geolocator要求的Kotlin版本 ext.kotlin_version = '1.8.22' repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:7.4.2" // 确保gradle版本与Kotlin版本兼容 // 添加Kotlin Gradle插件依赖,用上面定义的版本变量 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
如果原本已有classpath "org.jetbrains.kotlin:kotlin-gradle-plugin"这一行,直接替换版本号即可。
3. 解决类重复问题
如果修改版本后仍出现checkDebugDuplicateClasses错误,在android/app/build.gradle中添加以下配置:
排除重复的Kotlin模块文件
在android代码块内添加:
android { // 其他原有配置... packagingOptions { exclude 'META-INF/*.kotlin_module' } }
强制统一依赖版本
如果是特定依赖库版本冲突,在dependencies代码块外添加:
configurations.all { resolutionStrategy { // 替换为与Kotlin版本兼容的依赖版本,比如core-ktx force 'androidx.core:core-ktx:1.10.1' } }
具体要强制的依赖版本,根据错误提示里的重复类所属库来调整。
4. 清理缓存并重新构建
执行以下命令清理项目缓存,避免旧依赖干扰:
flutter clean flutter pub get
之后重新运行项目即可。
内容的提问来源于stack exchange,提问作者Nishanth
相关产品推荐
相关产品推荐

