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

Flutter升级后Android项目编译失败,报Gradle缓存空指针错误

Flutter升级后Android编译失败:appcompat-1.7.0 Dex转换空指针异常

问题详情

2024年9月24日将Flutter升级至最新版本后,项目无法编译构建,Android设备安装测试时触发以下错误:

ERROR:/Users/UserName/.gradle/caches/transforms-3/525a3ec9924944fdf720d87028d1e961/transformed/appcompat-1.7.0-runtime.jar: D8: java.lang.NullPointerException: Cannot invoke "String.length()" because "" is null
ERROR:/Users/UserName/.gradle/caches/transforms-3/23f325e1b838060e9e8064e2aaad3f0e/transformed/jetified-appcompat-resources-1.7.0-runtime.jar: D8: java.lang.NullPointerException: Cannot invoke "String.length()" because "" is null

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeExtDexDebug'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Failed to transform appcompat-resources-1.7.0.aar (androidx.appcompat:appcompat-resources: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=24, 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: /Users/harry/.gradle/caches/transforms-3/23f325e1b838060e9e8064e2aaad3f0e/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=24, 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: /Users/harry/.gradle/caches/transforms-3/525a3ec9924944fdf720d87028d1e961/transformed/appcompat-1.7.0-runtime.jar.
         > Error while dexing.

解决方案

1. 清理Gradle缓存

  • 执行项目内Gradle清理命令:
    ./gradlew clean cleanBuildCache
    
  • 删除本地Gradle缓存目录(路径:/Users/UserName/.gradle/caches/),避免损坏缓存文件干扰编译

2. 强制锁定appcompat为稳定版本

在android/app/build.gradle的dependencies块中添加强制依赖,替换有问题的1.7.0版本:

dependencies {
    // 保留原有依赖...
    implementation("androidx.appcompat:appcompat:1.6.1") {
        force = true
    }
    implementation("androidx.appcompat:appcompat-resources:1.6.1") {
        force = true
    }
}

3. 同步Android Gradle插件与Gradle版本

打开android/build.gradle,更新插件版本为Flutter兼容的稳定版:

buildscript {
    ext {
        kotlin_version = '1.8.22'
        gradle_version = '7.4.2'
    }
    dependencies {
        classpath "com.android.tools.build:gradle:$gradle_version"
        // 保留原有依赖...
    }
}

同时修改android/gradle/wrapper/gradle-wrapper.properties中的Gradle版本:

distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

4. 排查依赖冲突

运行以下命令查看项目依赖树,定位强制引入appcompat-1.7.0的第三方包:

flutter pub deps --tree

找到对应包后,可通过exclude规则排除其自带的appcompat依赖,或联系包作者更新版本。

5. 重新生成Android项目配置

备份现有android目录后,执行命令重新生成标准Android配置,再迁移自定义代码:

flutter create --platforms android .

内容的提问来源于stack exchange,提问作者Harry.R Jafari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:45:14