编译应用程序时 R8 程序类型已存在错误

Error in R8 Program type already present, when compiling the app

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

我已经尝试了如下几种解决方案:

gradlew clean in project-flutter / android
flutter clean

以及以下步骤:

我收到以下错误:

R8: Program type already present: io.flutter.plugins.webviewflutter.BuildConfig

FAILURE: Build failed with an exception.

出了什么问题:

Execution failed for task ':app:transformClassesAndResourcesWithR8ForRelease'. com.android.tools.r8.CompilationFailedException: Compilation failed to complete

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

如消息所示,class io.flutter.plugins.webviewflutter.BuildConfig 在输入中出现了两次。您将需要追踪具有此 class.

的两个依赖项

您可以使用

./gradlew app:dependencies

./gradlew app:androidDependencies

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

为我工作

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

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

找到答案,您可以从 pubspec.yaml 中删除 webview_flutter,这样您就可以在 pubspec.yaml 上使用 youtube_player_flutter。您仍然可以在使用 webview 的 dart 文件上使用具有 webview_flutterimport 'package:webview_media/webview_flutter.dart'; 的所有功能的 webview。

我遇到这个问题是因为 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

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

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

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

解决方案:

  • 从 pubspec.yaml 文件中删除 webview_flutter 包
  • 使用 import 'package:webview_media/webview_flutter.dart' 作为您的网络视图。; 这很好用。