Flutter Firebase Android端构建失败求助:D8空指针及Dexing错误
构建Flutter Firebase项目时的Dexing报错问题
报错信息
D8: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
Execution failed for DexingNoClasspathTransform: /home/john/Music/flutter_application/build/image_picker_android/intermediates/runtime_library_classes_dir/debug. > Error while dexing.
当前环境配置
Flutter 3.24.0 • channel stable • https://github.com/flutter/flutter.git Java version: openjdk 21.0.4 2024-07-16 Gradle version 8.5 Firebase version 13.15.2
build.gradle配置(defaultConfig部分)
defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.example.flutter_application" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = 24 targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName multiDexEnabled true }
解决方法
- 切换Java版本到17:Gradle 8.5与Java 21的组合可能和部分Flutter插件存在兼容性问题,换成OpenJDK 17可规避这类空指针导致的dexing错误。
- 更新image_picker插件:报错关联image_picker_android模块,执行
flutter pub upgrade image_picker升级到最新稳定版,确保插件适配当前环境。 - 清理构建缓存:执行以下命令彻底清理缓存后重新构建:
flutter clean rm -rf android/.gradle rm -rf ~/.gradle/caches flutter pub get flutter run - 固定Gradle使用的Java版本:在
android/gradle.properties文件中添加或修改配置,指定Java 17的路径:org.gradle.java.home=/path/to/your/openjdk17 - 检查Firebase依赖兼容性:确认pubspec.yaml中所有Firebase相关插件版本与Flutter 3.24.0兼容,可尝试升级firebase_core等核心依赖到最新适配版本。
内容的提问来源于stack exchange,提问作者Apata John
相关产品推荐
相关产品推荐

