Flutter:添加 "image_cropper" 和 "contacts_service" 包时构建错误
Flutter: build error when adding "image_cropper" and "contacts_service" packages
我可以成功构建 运行 一个全新的 flutter 项目。但是当我将 image_cropper: ^1.0.0
和 contacts_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 提到的步骤修复它,但总而言之:
- 首先确保app/build.gradle中的compileSdkVersion至少为28。此 属性 控制 Gradle 用于构建您的 APK 的 Android SDK 的版本。它不会影响您的应用可以 运行 使用的最低 SDK 版本。
- 右键单击flutter项目的android目录并使用此菜单打开它:
Flutter > Open android module in android studio
- 在新打开的项目中,从菜单select
Refactor > Migrate to AdnroidX
- 关闭项目并再次打开你的 flutter 项目。
我可以成功构建 运行 一个全新的 flutter 项目。但是当我将 image_cropper: ^1.0.0
和 contacts_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 提到的步骤修复它,但总而言之:
- 首先确保app/build.gradle中的compileSdkVersion至少为28。此 属性 控制 Gradle 用于构建您的 APK 的 Android SDK 的版本。它不会影响您的应用可以 运行 使用的最低 SDK 版本。
- 右键单击flutter项目的android目录并使用此菜单打开它:
Flutter > Open android module in android studio
- 在新打开的项目中,从菜单select
Refactor > Migrate to AdnroidX
- 关闭项目并再次打开你的 flutter 项目。