引入Geolocator 2.1.1(非AndroidX版本)后遇重复类错误求助
解决
android.support.v4.app.INotificationSideChannel 重复类构建错误 嘿,我来帮你搞定这个头疼的构建错误!你遇到的是典型的Android Support库依赖冲突:项目里的多个依赖同时引入了相同的android.support.v4相关类,D8合并DEX归档的时候就会报错。
问题根源
你现在用的都是AndroidX推出前的旧版Flutter依赖,新增的geolocator: 2.1.1大概率间接引入了某个和你现有依赖重复的Support库组件,尤其是INotificationSideChannel这个类,导致了重复冲突。
一步步解决问题
1. 先找出到底是谁在重复引入依赖
运行这条命令查看所有依赖的树形结构,就能定位到重复引入Support库的依赖:
flutter pub deps --tree
重点盯着android.support.v4相关的条目,看看除了geolocator之外,还有哪些依赖也带了它。
2. 强制所有依赖用同一个Support库版本
打开你Android模块下的build.gradle(不是项目根目录的那个),添加这段配置,强制所有依赖使用同一版本的Support库:
configurations.all { resolutionStrategy { force 'com.android.support:support-v4:28.0.0' // 这是Support库最后一个稳定版,适配大部分旧依赖 } }
如果你的项目原本用的是其他版本,替换成你对应的版本就行。
3. 清理缓存重新构建
执行下面的命令,把旧缓存清干净再重新构建:
flutter clean flutter pub get flutter run
4. 备选方案:升级到AndroidX(如果能接受的话)
如果上面的方法没解决,也可以试试升级到AndroidX——Jetifier工具会自动把旧的Support库依赖转换成AndroidX版本:
- 打开
android/gradle.properties,添加这两行:android.useAndroidX=true android.enableJetifier=true - 然后同样运行
flutter clean和flutter pub get,再重新构建项目。
额外提醒
你的不少依赖版本真的挺老了(比如image_cropper:0.0.9、webview_flutter:0.2.0),这些旧依赖本身就容易引发依赖冲突。如果条件允许,建议慢慢把这些依赖升级到较新的兼容版本,能少踩很多坑。
内容的提问来源于stack exchange,提问作者Figen Güngör
相关产品推荐
相关产品推荐

