【问题标题】:Error in R8 Program type already present, when compiling the app编译应用程序时已存在 R8 程序类型错误
【发布时间】:2020-03-13 13:18:42
【问题描述】:

我正在尝试为 Flutter 编译 APK,但在 r8 中出现错误。我已经在 Flutter 中有其他应用程序,但我从来没有遇到过用它们编译和测试的问题。我意识到问题在于 WebView 库,因为当我从 pubspec 中删除它时,应用程序会编译。但我现在不能放弃使用 WebView,它对应用程序很重要。奇怪的是,我可以在设备上调试应用程序。

我尝试了以下几种解决方案:

gradlew clean in project-flutter / android
flutter clean

还有以下步骤:

  • 在 pub 规范中更新到最新版本的 webview 依赖项。
  • 我已经切换到flutter主频道了。
  • 也执行了颤振升级,但没有解决问题。

我收到以下错误:

R8:程序类型已经存在: io.flutter.plugins.webviewflutter.BuildConfig

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

出了什么问题:

任务执行失败 ':app:transformClassesAndResourcesWithR8ForRelease'。 com.android.tools.r8.CompilationFailedException:编译失败 完成

参考 r8:https://developer.android.com/studio/build/shrink-code?hl=pt-br

【问题讨论】:

  • 我也面临与 webview 插件类似的问题,错误为 D8:程序类型已存在:io.flutter.plugins.webviewflutter.BuildConfig。
  • 实际上我在为我的项目构建 APK 时遇到了完全相同的问题,但是在我的测试设备上运行它时,它可以工作。发现我正在使用 youtube_player_flutter 插件,如果我删除它,构建过程将正常工作,仍然不知道为什么最新版本的flutter有这么多无法协同工作的依赖项(这不是我的第一个问题不能一起使用某些依赖项)

标签: android flutter webview android-r8


【解决方案1】:

找到答案,您可以从 pubspec.yaml 中删除 webview_flutter,因此您只需在 pubspec.yaml 中使用 youtube_player_flutter。您仍然可以在使用 webview 的 dart 文件中使用带有 webview_flutterimport 'package:webview_media/webview_flutter.dart'; 的所有功能的 webview。

【讨论】:

    【解决方案2】:

    正如消息所示,io.flutter.plugins.webviewflutter.BuildConfig 类在输入中出现了两次。您将需要跟踪具有此类的两个依赖项。

    你可以使用

    ./gradlew app:dependencies
    

    ./gradlew app:androidDependencies
    

    获取有关所有依赖项的信息。然后你需要弄清楚如何避免这些依赖关系之一。

    【讨论】:

    • 还有其他方法可以继续使用插件/依赖项吗?
    【解决方案3】:

    我遇到了这个问题,因为 youtube_player_flutter 和 flutter_html 使用相同的依赖项 flutter_webview。

    我用过这个,工作起来就像一个魅力

    • flutter_html: ^1.0.0
    • webview_flutter:^0.3.19+5
    • youtube_player_flutter:6.0.3+2

    【讨论】:

    • 仅包含链接的答案将在未来被删除,因此请附上代码及其解释。
    【解决方案4】:

    为我工作

    我将 pubspec.yaml 中的 webview_flutter 0.3.19+9 替换为 webview_media 0.1.1+3

    这对我真的很有帮助 [https://github.com/sarbagyastha/youtube_player_flutter/issues/11][1]

    【讨论】:

      【解决方案5】:

      为我工作。 只需更新 youtube_player_flutterwebview_flutter 的软件包。之后使用 flutter cleanflutter packages get 命令来解决这个问题。

      【讨论】:

        【解决方案6】:

        我在使用 webview_flutter 和 youtube_player_flutter 时遇到了同样的问题。我在 Github 上使用了 @srinivasanrsp 的解决方案。它有效。

        问题: youtube_player_flutter 使用 webview 播放来自 Youtube 的视频。所以你(在不知不觉中)试图导入和使用同一个包。

        解决方案:

        • 从 pubspec.yaml 文件中移除 webview_flutter 包
        • 使用 import 'package:webview_media/webview_flutter.dart' 作为你的 webview。 这很好用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-05-15
          • 1970-01-01
          • 1970-01-01
          • 2019-07-25
          • 2019-09-04
          • 2020-10-13
          • 2019-05-22
          相关资源
          最近更新 更多