如何解决 Flutter 的重复类问题?

Posted

技术标签:

【中文标题】如何解决 Flutter 的重复类问题?【英文标题】:How to solve duplicate classes issue for Flutter? 【发布时间】:2019-06-07 04:16:34 【问题描述】:

添加后

位置:^1.4.1

到我在 pubspec.yaml 中的依赖项:

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for ios style icons.
  cupertino_icons: ^0.1.2
  rxdart: ^0.20.0
  http: ^0.12.0
  date_format: ^1.0.5
  intl: ^0.15.7
  fluttertoast: ^2.2.3
  location: ^1.4.1

我得到了包,一切都很好,但是当我尝试构建它时,应用程序崩溃并显示一条消息:

正在调试模式下在 Lenovo K33a48 上启动 lib\main.dart... 正在初始化梯度... 解决依赖关系... 摇篮任务'assembleDebug'... D8:程序类型已经存在:android.support.v4.app.INotificationSideChannel

FAILURE:构建失败并出现异常。

出了什么问题: 任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。

com.android.builder.dexing.DexArchiveMergerException: 合并 dex 档案时出错: “这里是所有 jar 档案的列表” 在https://developer.android.com/studio/build/dependencies#duplicate_classes 了解如何解决问题。 程序类型已存在:android.support.v4.app.INotificationSideChannel

尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

通过https://help.gradle.org获得更多帮助

在 18 秒内构建失败 完成错误:Gradle 任务 assembleDebug 失败,退出代码为 1

我的 targetSdk 是 28。我使用的是 Android Studio 3.2.1 非常感谢您的帮助!

【问题讨论】:

***.com/questions/49886597/… ***.com/questions/50524672/… 谢谢@GünterZöchbauer,我已经学会了如何根据第一个链接访问android依赖树,但是编译器强制执行所有建议的解析策略并不足以解决问题。最后我得到了奇怪的错误。我注意到 Lyokone 的位置插件 1.4.1 与 fluttertoast 插件 2.2.3 一起使用导致了这个问题。只有将fluttertoast更新到最新版本2.2.6(该版本昨天发布)后,问题才得到解决。奇怪的是,这个问题只出现在个人电脑上,而不是 macbook 专业人士。 @miloss 你解决了这个问题吗?我看到了同样的问题。 不 @RideSun ,我无法以这种方式解决它。插件更新解决了这个问题。 【参考方案1】:

发生这种情况是因为您使用的库使用了相同的依赖项。

解决方案 1

    在 VSCode 中搜索 (Ctrl+Shift + P) 在您的错误 android.support.v4.app.INotificationSideChannel. 中搜索关键字Notification/Side/Channel。选择一个。 如果有相同的依赖,说明有重复的库。 解决方案:删除您正在使用的库之一

解决方案 2(推荐)

    在 VSCode 中搜索 (Ctrl+Shift + P) 在您的错误 android.support.v4.app.INotificationSideChannel. 中搜索关键字Notification/Side/Channel。选择一个。 找到一个使用相同依赖的库,然后更新到latest package version。 此解决方案将保留您正在使用的库而不删除它

【讨论】:

【参考方案2】:

我无法复制您报告的行为。正如您在 cmets 中提到的,该问题似乎已通过插件更新解决。运行flutter clean 应该可以解决依赖缓存中引起的大部分冲突。

【讨论】:

以上是关于如何解决 Flutter 的重复类问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Flutter 热重载问题

我如何将 Flutter 中的所有设计元素隔离到一个 ThemeData 类...有任何策略 os 解决方案吗?

Flutter 中未定义的类名“MaterialApp”。如何解决这个问题?

如何在 Flutter web 中使用 ReCaptcha [重复]

如何解决gradle build中的重复类错误?

如何更改我的flutter android应用程序的api sdk版本[重复]