Flutter:添加 "image_cropper" 和 "contacts_service" 包时构建错误

Flutter: build error when adding "image_cropper" and "contacts_service" packages

我可以成功构建 运行 一个全新的 flutter 项目。但是当我将 image_cropper: ^1.0.0contacts_service: ^0.2.4 包添加到 pubspec.yaml 和 运行 flutter packages get 时,我无法再构建项目,并得到这个构建错误:

D8: Program type already present: android.support.v4.app.INotificationSideChannel

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar, E:\Projects\flutter\hello\build\app\intermediates\transforms\dexBuilder\debug.jar
  Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
  Program type already present: android.support.v4.app.INotificationSideChannel

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 19s
*******************************************************************************************
The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app.
See https:///CP92wY for more information on the problem and how to fix it.
*******************************************************************************************
Finished with error: Gradle task assembleDebug failed with exit code 1

我不是很理解这个错误,但似乎这两个包之间存在命名冲突(因为错误文本中的duplicate_classes)。有什么解决方法吗?

请注意,这个错误不会发生在我的任何其他包上。

在build.gradle默认配置中添加multiDexEnabled true

这是一个 Android X 兼容性问题。我可以按照 here 提到的步骤修复它,但总而言之:

  1. 首先确保app/build.gradle中的compileSdkVersion至少为28。此 属性 控制 Gradle 用于构建您的 APK 的 Android SDK 的版本。它不会影响您的应用可以 运行 使用的最低 SDK 版本。
  2. 右键单击flutter项目的android目录并使用此菜单打开它:Flutter > Open android module in android studio
  3. 在新打开的项目中,从菜单selectRefactor > Migrate to AdnroidX
  4. 关闭项目并再次打开你的 flutter 项目。