编译应用程序时 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
以及以下步骤:
- 更新到 pub 规范中最新版本的 webview 依赖项。
- 我已经切换到flutter master频道了
- 也进行了 flutter 升级,但没有解决问题。
我收到以下错误:
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_flutter
和 import '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_flutter 和 webview_flutter 的软件包即可。之后使用 flutter clean 和 flutter 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' 作为您的网络视图。;
这很好用。
我正在尝试为 Flutter 编译 APK,但在 r8 中出现错误。我在 Flutter 中已经有其他应用程序,但我在编译和使用它们进行测试时从未遇到过问题。我意识到问题出在 WebView 库上,因为当我从 pubspec 中删除它时,应用程序会编译。但我现在不能放弃 WebView 的使用,它对应用程序很重要。奇怪的是我可以在设备上调试应用程序。
我已经尝试了如下几种解决方案:
gradlew clean in project-flutter / android
flutter clean
以及以下步骤:
- 更新到 pub 规范中最新版本的 webview 依赖项。
- 我已经切换到flutter master频道了
- 也进行了 flutter 升级,但没有解决问题。
我收到以下错误:
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_flutter
和 import '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_flutter 和 webview_flutter 的软件包即可。之后使用 flutter clean 和 flutter 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' 作为您的网络视图。; 这很好用。