问题描述
D8: Cannot create android app from an archive 'C:\Users\ado\.gradle\caches\transforms-2\files-2.1\3aa879f694b1137d653976ac38fcf06f\xxx\jars\classes.jar' containing both DEX and Java-bytecode content
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:multiDexListDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> Error while merging dex archives:
原因分析
看错误提示是跟multidex有关,先检查项目Android项目是否有开启multiDexEnabled,是否添加了multidex的库。
解决方案
编辑android目录下的app\build.gradle
android {
defaultConfig {
...
//开启MultiDex
multiDexEnabled true
}
...
}
dependencies {
...
//非Androidx项目的依赖
implementation 'com.android.support:multidex:1.0.3'
//如果是Androidx项目,使用下面的
implementation 'androidx.multidex:multidex:2.0.1'
}
如果做了以上的配置,还是出错,一般都是minSdkVersion的问题。
Flutter最低支持Android 4.1,所以默认创建的Android项目最小版本为16,但是5.0后使用的是ART运行时,本身就是支持multidex的。将miniSdkVersion改为21即可。
android {
defaultConfig {
...
//minSdkVersion 16
minSdkVersion 21
targetSdkVersion 28
multiDexEnabled true
}
...
}