迁移至Flutter 2后firebase_core插件导致Release包构建失败如何解决
解决方案
问题根因
你遇到的报错本质是升级到Gradle 7.x后,默认不会将项目本地的Android SDK路径配置同步到第三方Flutter插件的构建环境中,导致firebase_core插件构建release版本时无法读取SDK位置。Debug模式可正常运行是因为debug构建时会默认使用本地调试环境的SDK配置。
分步操作
- 第一步:先验证Flutter环境配置是否正常
执行命令flutter doctor -v,检查输出中Android SDK路径识别是否正常。如果识别异常,先在环境变量中配置ANDROID_SDK_ROOT,mac系统可在~/.zshrc或~/.bash_profile中添加如下配置:
配置完成后执行export ANDROID_SDK_ROOT=你的Android SDK本地路径(默认一般是~/Library/Android/sdk)source ~/.zshrc(对应你使用的shell配置文件)生效。 - 第二步:选择适配方案
方案1:降级Gradle到Flutter 2.x官方推荐兼容版本(优先选,适配成本最低)- 打开项目根目录android/build.gradle文件,将AGP版本修改为4.1.0:
classpath 'com.android.tools.build:gradle:4.1.0'- 打开项目根目录android/gradle/wrapper/gradle-wrapper.properties文件,修改Gradle版本:
方案2:不降级Gradle,手动传递SDK配置到子项目distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
打开项目根目录android/build.gradle文件,在文件末尾添加如下配置:subprojects { afterEvaluate { project -> // 统一子项目编译版本,和主项目保持一致 if (project.hasProperty("android")) { android { compileSdkVersion 29 buildToolsVersion "30.0.3" } } // 传递主项目的SDK路径配置到子项目 if (rootProject.file('local.properties').exists()) { def properties = new Properties() properties.load(rootProject.file('local.properties').newDataInputStream()) project.ext.set('android.sdkDirectory', properties.getProperty('sdk.dir')) } } } - 第三步:清理缓存重新构建
依次执行以下命令:flutter clean flutter pub get flutter build apk --release
额外注意事项
不要单独引入Firebase相关的原生Android依赖,你当前dependencies中配置的implementation 'com.google.firebase:firebase-messaging:20.1.0'建议删除,统一使用pub.dev上的firebase_messaging插件,且版本要和firebase_core:1.5.0对齐,避免出现版本兼容冲突。
内容的提问来源于stack exchange,提问作者Ashraf Zarkani
相关产品推荐
相关产品推荐

