Flutter 3.13.9升级后Android应用构建失败,如何解决?
问题描述
Flutter版本信息
Flutter 3.13.9 • channel stable • https://github.com/flutter/flutter.git Framework • revision d211f42860 (7 days ago) • 2023-10-25 13:42:25 -0700 Engine • revision 0545f8705d Tools • Dart 3.1.5 • DevTools 2.25.0
升级后构建错误
ERROR:D8: com.android.tools.r8.kotlin.H ERROR:D8: com.android.tools.r8.kotlin.H FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:mergeDexDebug'. > Could not resolve all files for configuration ':app:debugRuntimeClasspath'. > Failed to transform firebase-analytics-ktx-21.5.0.aar (com.google.firebase:firebase-analytics-ktx:21.5.0) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=19, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}. > Execution failed for DexingWithClasspathTransform: C:\Users\Vitaliy\.gradle\caches\transforms-3\41525bdf5de3383fe28a17aaa9610b1b\transformed\jetified-firebase-analytics-ktx-21.5.0-runtime.jar. > Error while dexing. > Failed to transform play-services-measurement-api-21.5.0.aar (com.google.android.gms:play-services-measurement-api:21.5.0) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=19, org.gradle.status=release, org.gradle.usage=java-runtime}. > Execution failed for DexingWithClasspathTransform: C:\Users\Vitaliy\.gradle\caches\transforms-3\ce1b8deb6ac5da9f5a47c5868d41ba4c\transformed\jetified-play-services-measurement-api-21.5.0-runtime.jar. > Error while dexing. * 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 2s
已尝试清理缓存、删除.gradle文件夹,问题仍未解决,求可行的构建方案。
解决方案
以下是几个针对性的解决方法,按顺序尝试:
1. 升级Firebase相关依赖版本
Flutter 3.13.x对Firebase依赖的兼容性要求更高,旧版本的firebase-analytics-ktx(21.5.0)可能存在适配问题。在项目的android/build.gradle中添加强制依赖版本的配置:
allprojects { repositories { // 保留原有仓库配置 } configurations.all { resolutionStrategy.force 'com.google.firebase:firebase-analytics-ktx:21.6.0' resolutionStrategy.force 'com.google.android.gms:play-services-measurement-api:21.6.0' } }
同步Gradle后重新构建项目。
2. 调整D8/R8编译配置
在android/app/build.gradle的android块中补充或修改以下配置,优化Dex编译逻辑:
android { // 保留原有配置 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } packagingOptions { exclude 'META-INF/*.kotlin_module' } dexOptions { preDexLibraries = false javaMaxHeapSize "4g" } }
3. 启用MultiDex支持
若应用方法数超过Android单Dex限制,也可能触发此类错误。在android/app/build.gradle中开启MultiDex:
android { defaultConfig { // 保留原有配置 multiDexEnabled true } } dependencies { implementation 'androidx.multidex:multidex:2.0.1' }
如果项目没有自定义Application类,修改AndroidManifest.xml的application标签:
<application android:name="androidx.multidex.MultiDexApplication" // 保留其他属性 >
4. 临时降级Flutter版本
如果以上方法均无效,可临时降级到之前能正常构建的Flutter版本:
flutter downgrade <之前的版本号>
内容的提问来源于stack exchange,提问作者Vitalii
相关产品推荐
相关产品推荐

