Flutter中Gradle构建与appcompat相关的mergeExtDexDebug错误解决求助
报错信息
Execution failed for task ':app:mergeExtDexDebug'.
Could not resolve all files for configuration ':app:debugRuntimeClasspath'.raryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}.raryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}.
Execution failed for DexingNoClasspathTransform: C:\Users\Ganesh Waje.gradle\caches\transforms-3\eca9a3155755829de657c56dd5ec41a3\transformed\jetified-appcompat-resources-1.7.0-runtime.jar.
Error while dexing.
Failed to transform appcompat-1.7.0.aar (androidx.appcompat:appcompat:1.7.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=25, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}.
Execution failed for DexingNoClasspathTransform: C:\Users\Ganesh Waje.gradle\caches\transforms-3\560616332cdd3e7f4155e4c3061ec9e8\transformed\appcompat-1.7.0-runtime.jar.
Error while dexing.
现有配置文件
Android层级build.gradle
buildscript { ext.kotlin_version = '2.0.0' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.0.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.google.gms:google-services:4.4.2" // Corrected versioning } } allprojects { repositories { google() mavenCentral() } configurations.all { resolutionStrategy { force("androidx.core:core-ktx:1.9.0") } } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } tasks.register("clean", Delete) { delete rootProject.buildDir }
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.main_app" compileSdkVersion flutter.compileSdkVersion ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { applicationId "com.example.main_app" minSdkVersion 25 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName } buildTypes { release { signingConfig signingConfigs.debug } } } flutter { source '../..' } dependencies { implementation platform('com.google.firebase:firebase-bom:33.1.1') implementation 'com.google.firebase:firebase-analytics' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.7.0' }
解决方案
1. 清理Gradle缓存与项目构建文件
执行以下命令彻底清理缓存和旧构建文件:
flutter clean # Windows用户执行:rmdir /s /q %USERPROFILE%\.gradle\caches # Mac/Linux用户执行:rm -rf ~/.gradle/caches flutter pub get
之后重新运行项目:flutter run
2. 统一AppCompat依赖版本
在Android层级build.gradle的resolutionStrategy中添加appcompat的强制版本,确保与app层级依赖一致:
configurations.all { resolutionStrategy { force("androidx.core:core-ktx:1.9.0") force("androidx.appcompat:appcompat:1.7.0") } }
若版本仍存在兼容问题,可降级为稳定版如1.6.1,同步修改两处配置。
3. 升级Java版本并调整编译配置
Gradle 8.0.2推荐使用Java 11或更高版本,修改app层级build.gradle:
android { // ... 其他配置 compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 coreLibraryDesugaringEnabled true } kotlinOptions { jvmTarget = '11' } } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' // ... 其他依赖 }
同时在local.properties中指定Java 11路径:
# Windows示例 org.gradle.java.home=C:\\Program Files\\Java\\jdk-11.x.x # Mac示例 org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-11.x.x.jdk/Contents/Home
4. 调整Kotlin版本兼容性
Kotlin 2.0.0与Gradle 8.0.2存在兼容性风险,降级为稳定版如1.9.23:
修改Android层级build.gradle中的ext.kotlin_version = '1.9.23',然后同步Gradle。
5. 增加Dex编译堆内存
在app层级build.gradle的android块中添加:
android { // ... 其他配置 dexOptions { javaMaxHeapSize "4g" } }
内容的提问来源于stack exchange,提问作者G sw

