编译失败[20190716]
愉快的编写着flutter code,下午突然不能编译了,出现如下错误:
Resolving dependencies...
Running Gradle task 'assembleDebug'...
D8: Program type already present: android.support.v4.os.ResultReceiver$1
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:
D:\techworkspace\flutter\flutterCombat\flutter_combat\build\app\intermediates\transforms\dexBuilder\debug\0.jar,
D:\techworkspace\flutter\flutterCombat\flutter_combat\build\app\intermediates\transforms\dexBuilder\debug\1.jar,
D:\techworkspace\flutter\f...
...
...
Program type already present: android.support.v4.os.ResultReceiver$1
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
* 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 14s
*******************************************************************************************
The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app.
See https://goo.gl/CP92wY for more information on the problem and how to fix it.
*******************************************************************************************
Finished with error: Gradle task assembleDebug failed with exit code 1
大概意思是说,安卓依赖在编译时和运行时出现了不同的版本,因为有了AndroidX的出现。
可能在你使用的依赖package的时候,你会注意到他们的更新日志,其中会有Migrate to AndroidX。
由于之前的Android.support包管理过于混乱,所以Google推出了AndroidX。如果各位开发者有时间的话,还是要尽量升级一下项目到AndroidX,毕竟这个是未来,谷歌的新标准。
使用Android Studio自动升级
确保AS是3.2以上,
- 1.打开project,在android文件夹上右键选择->Flutter->Open Android Module in Android Studio
- 2.自动打开了一个新窗口,等待tasks执行完毕,选择Refactor->Migrate to AndroidX.
- 3.检测完成后,下方出现提示徐亚升级的地方,确认后点击Do Refector
升级完毕,关闭窗口,再次运行Flutter即可。