You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter项目minSdkVersion设为19/21时Dex编译失败求助

问题

使用Flutter 3.19.2、Android Studio Iguana | 2023.2.1(2024年2月22日构建)及Gradle 7.6开发项目,将minSdkVersion改为24时项目可正常运行,但设置为19或21时,构建出现Dex编译失败错误:

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 play-services-measurement-api-21.5.1.aar (com.google.android.gms:play-services-measurement-api:21.5.1) 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: /home/---/.gradle/caches/transforms-3/49f516b4e0cb096adcf638dba9621d3b/transformed/jetified-play-services-measurement-api-21.5.1-runtime.jar.
         > Error while dexing.
   > Failed to transform firebase-auth-22.3.1.aar (com.google.firebase:firebase-auth:22.3.1) 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: /home/----/.gradle/caches/transforms-3/ae74ccf15751eaa27d72e95a9c344e0a/transformed/jetified-firebase-auth-22.3.1-runtime.jar.
         > Error while dexing.
   > Failed to transform recaptcha-18.4.0.aar (com.google.android.recaptcha:recaptcha:18.4.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: /home/----/.gradle/caches/transforms-3/ee3c9277022a423a54cec16e68f37c58/transformed/jetified-recaptcha-18.4.0-runtime.jar.
         > Error while dexing.

项目相关配置:

android/app/build.gradle

plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
    id 'com.google.gms.google-services'
}

android {
    namespace "com.example"
    compileSdk 34
    ndkVersion flutter.ndkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

   defaultConfig {
       
        applicationId  "com.example"
         
        minSdkVersion 19 
        targetSdkVersion 34
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        multiDexEnabled true
    }
    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
          signingConfig signingConfigs.release
          //  signingConfig signingConfigs.debug
        }
    }
    bundle {
        storeArchive {
            enable = false
        }
    }
}
dependencies {
     implementation(platform("com.google.firebase:firebase-bom:32.7.3"))
     implementation 'com.google.firebase:firebase-analytics'  
     implementation 'com.google.firebase:firebase-auth' 
     implementation 'com.google.android.gms:play-services-auth'
     implementation 'com.google.android.gms:play-services-ads'
     implementation 'com.android.support:multidex:2.0.1'      
}

android/settings.gradle

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version "7.4.2" apply false   
    id "org.jetbrains.kotlin.android" version "1.8.20" apply false  
    id "com.google.gms.google-services" version "4.4.1" apply false       
}

pubspec.yaml

environment:
  sdk: '>=3.1.0 <4.0.0'

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.6
  google_mobile_ads: ^4.0.0
  firebase_storage: ^11.0.0
  cloud_firestore: ^4.0.0
  firebase_auth: ^4.0.0
  flutter_share: ^2.0.0
  firebase_core: ^2.0.0
  firebase_messaging: ^14.0.0
  intl: 0.18.1
  flutter_localizations:
    sdk: flutter

需解决该Dex编译失败问题,使项目能在minSdkVersion 19或21下正常构建运行。


解决方案

1. 升级Gradle及Android Gradle Plugin版本

当前Gradle 7.6和Android Gradle Plugin 7.4.2对低版本minSdk的Dex支持有限,建议升级到兼容版本:

  • 修改android/settings.gradle中的Android Gradle Plugin版本为7.4.4:
    id "com.android.application" version "7.4.4" apply false
    
  • 同步项目后,按提示升级Gradle到对应版本(7.4.4适配Gradle 7.5+,推荐用7.6.1)。

2. 启用完整核心库Desugaring

低版本Android系统不支持Java 8+部分语法,需开启Desugaring:

  • 在android/app/build.gradle的android块中添加配置:
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
        coreLibraryDesugaringEnabled true
    }
    
  • 在dependencies块中添加Desugaring依赖:
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
    

3. 降级Firebase BOM版本

当前Firebase BOM 32.7.3对应的库版本对minSdk 19/21支持不佳,可降级到兼容版本:

  • 修改android/app/build.gradle中的Firebase BOM版本为31.5.0:
    implementation(platform("com.google.firebase:firebase-bom:31.5.0"))
    
  • 同步后,Firebase相关库会自动适配为兼容minSdk 19的版本。

4. 清理Gradle缓存并重建

缓存损坏可能导致编译失败,执行以下操作:

  • 终端运行:./gradlew clean(Windows用gradlew clean)
  • 删除项目根目录.gradle文件夹及android/.gradle文件夹
  • 重新执行:flutter run

5. 替换不兼容第三方依赖

部分库可能不再支持低版本minSdk:

  • google_mobile_ads: ^4.0.0虽支持minSdk 19,若仍有问题可尝试降级到3.0.0
  • flutter_share: ^2.0.0若存在兼容性问题,可替换为其他支持低版本的分享库

内容的提问来源于stack exchange,提问作者Qqq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:24:54