运行Flutter项目时遭遇:app:mergeExtDexDebug错误求助
错误信息
FAILURE: 构建失败,出现异常。 * 出错原因: 任务 ':app:mergeExtDexDebug' 执行失败。 > 无法为配置 ':app:debugRuntimeClasspath' 解析所有文件。 > 无法转换 appcompat-resources-1.7.0.aar (androidx.appcompat:appcompat-resources:1.7.0) 以匹配属性 {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=23, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}。 > DexingWithClasspathTransform 执行失败: C:\Users\User\.gradle\caches\transforms-3\a497fff099218d09578e12c23e9f46a7\transformed\jetified-appcompat-resources-1.7.0-runtime.jar。 > Dexing 时出错。
无法转换 appcompat-1.7.0.aar (androidx.appcompat:appcompat:1.7.0) 以匹配属性 {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=23, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}。
DexingWithClasspathTransform 执行失败: C:\Users\User.gradle\caches\transforms-3\039b4c1f544ca04a871af3153003f63c\transformed\appcompat-1.7.0-runtime.jar。
Dexing 时出错。
* 建议操作: > 使用 --stacktrace 选项获取堆栈跟踪信息。 > 使用 --info 或 --debug 选项获取更多日志输出。 > 使用 --scan 选项获取完整分析报告。
项目配置(android/app/build.gradle)
plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" id "com.google.gms.google-services" // 添加此行 } def localProperties = new Properties() def localPropertiesFile = rootProject.file("local.properties") if (localPropertiesFile.exists()) { localPropertiesFile.withReader("UTF-8") { reader -> localProperties.load(reader) } } def flutterVersionCode = localProperties.getProperty("flutter.versionCode") if (flutterVersionCode == null) { flutterVersionCode = "1" } def flutterVersionName = localProperties.getProperty("flutter.versionName") if (flutterVersionName == null) { flutterVersionName = "1.0" } android { namespace = "com.example.my_tflite_app" compileSdk = flutter.compileSdkVersion ndkVersion '21.1.6528147' compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } defaultConfig { // TODO: 指定你自己的唯一应用ID applicationId = "com.example.my_tflite_app" // 你可以根据应用需求更新以下值 minSdk = 23 // 将minSdkVersion更新为23 targetSdk = flutter.targetSdkVersion versionCode = flutterVersionCode.toInteger() versionName = flutterVersionName } buildTypes { release { // TODO: 为发布版本添加你自己的签名配置 // 暂时使用调试密钥签名,这样`flutter run --release`可以正常运行 signingConfig = signingConfigs.debug } } } flutter { source = "../.." } dependencies { implementation 'androidx.core:core-ktx:1.13.1' implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' // 添加以下Firebase相关依赖 implementation platform('com.google.firebase:firebase-bom:31.2.0') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-auth' // 添加Firebase Auth依赖 }
解决方案
清理Gradle缓存
删除本地Gradle缓存目录C:\Users\User\.gradle\caches,然后依次执行flutter clean和flutter run命令。启用MultiDex
在android/app/build.gradle的defaultConfig块中添加MultiDex配置,并引入依赖:android { // ... 现有配置 defaultConfig { // ... 现有配置 multiDexEnabled true } } dependencies { // ... 现有依赖 implementation 'androidx.multidex:multidex:2.0.1' }降级AppCompat版本
将appcompat依赖从1.7.0降级到更稳定的版本,例如1.6.1:implementation 'androidx.appcompat:appcompat:1.6.1'检查Java版本
确保本地安装的JDK版本为Java 8,与项目中compileOptions配置的版本一致,避免版本不兼容导致dexing失败。更新NDK版本
将NDK版本更新至较新的稳定版(如25.2.9519653),同时确保Flutter SDK与Gradle插件版本匹配。
内容的提问来源于stack exchange,提问作者Nurin Afiza

