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
相关产品推荐
相关产品推荐

