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

7

在我的pubspec.yaml文件中添加依赖项

依赖项: location ^1.4.1

之后:

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

我可以获取到 Packages,一切都很好,但是当我尝试构建时,应用程序崩溃并显示以下消息:

在调试模式下启动 Lenovo K33a48 上的 lib\main.dart... 正在初始化 gradle... 正在解析依赖项... Gradle 任务 'assembleDebug'... D8: 程序类型已存在:android.support.v4.app.INotificationSideChannel

失败:构建失败。

  • 出现了什么问题: 执行任务 ':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。 非常感谢您的帮助!


1
https://dev59.com/TlUL5IYBdhLWcg3wt6IK - Günter Zöchbauer
https://dev59.com/xek5XIcBkEYKwwoY7eME - Günter Zöchbauer
1
谢谢 @GünterZöchbauer,我学会了如何基于第一个链接访问 Android 依赖树,但是强制执行编译器建议的所有解决策略并不能解决问题。最终我得到了奇怪的错误。我注意到 Lyokone 的位置插件 1.4.1 与 fluttertoast 插件 2.2.3 一起使用会引起此问题。 只有在将 fluttertoast 更新到最新版本 2.2.6(该版本昨天发布)之后,问题才得以解决。奇怪的是,这个问题只出现在 PC 电脑上,而不是 MacBook Pro 上。 - miloss
@miloss,你解决了那个问题吗?我也遇到了同样的问题。 - Ride Sun
不是的 @RideSun,我没能用那种方式解决它。插件更新解决了这个问题。 - miloss
2个回答

0

这是因为你正在使用的库使用了相同的依赖项。

解决方案1

  1. 在VSCode中搜索(Ctrl+Shift + P)
  2. 在你的错误android.support.v4.app.INotificationSideChannel.中搜索关键词Notification/Side/Channel,选择一个。
  3. 如果有相同的依赖项,则意味着存在重复的库。
  4. 解决方案:删除其中一个库

解决方案2(推荐)

  1. 在VSCode中搜索(Ctrl+Shift + P)
  2. 在你的错误android.support.v4.app.INotificationSideChannel.中搜索关键词Notification/Side/Channel,选择一个。
  3. 找到一个使用相同依赖项的库,然后更新到最新的包版本
  4. 这个解决方案将保留你正在使用的库而不删除它

-1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接