Flutter构建AppBundle失败:执行:app:signReleaseBundle任务时触发NullPointerException
看起来你在构建Flutter的Release AppBundle时碰到了签名环节的空指针异常,我帮你梳理几个从你的配置文件里发现的问题和对应的修复方案:
1. 首先排查key.properties里的键名拼写错误
你的key.properties文件里有一个明显的大小写错误:
storePassword=rlacksdn07! keypassword=jesusmyking07! # 这里的键名应该是keyPassword(首字母P大写) keyAlias=upload storeFile=C:/Users/joshu/upload-keystore.jks
Gradle读取签名配置时是严格区分大小写的,keypassword这个键名不存在,会导致gradle获取不到key密码,进而触发NullPointerException。把这一行改成keyPassword=jesusmyking07!即可。
2. 修复Gradle与Android Gradle Plugin(AGP)的版本不兼容问题
你的配置里存在版本不匹配的情况:
- 在
android/build.gradle中使用的AGP版本是com.android.tools.build:gradle:7.3.0 - 但
gradle-wrapper.properties里的Gradle版本是gradle-8.5-rc-1
AGP和Gradle有严格的版本对应关系,7.3.0的AGP只能搭配7.3~7.4之间的Gradle版本,高版本的Gradle会导致构建时出现各种异常。你可以二选一:
- 方案A:降低Gradle版本,修改
gradle-wrapper.properties里的distributionUrl为:distributionUrl=https://services.gradle.org/distributions/gradle-7.4-all.zip - 方案B:升级AGP版本到8.0+(对应Gradle 8.0+),修改
android/build.gradle中的AGP依赖为:classpath 'com.android.tools.build:gradle:8.0.2'
另外注意:你的android/gradle.properties里重复写了distributionUrl,这一行是无效的,建议删掉,只保留gradle-wrapper.properties里的配置。
3. 确认Keystore文件路径的正确性
你的storeFile用了绝对路径C:/Users/joshu/upload-keystore.jks,请务必确认:
- 这个路径下确实存在
upload-keystore.jks文件 - 用户名
joshu拼写正确(注意Windows用户名的大小写) - 文件没有被移动或者重命名
如果觉得绝对路径容易出问题,可以把keystore文件复制到android目录下,然后修改key.properties里的路径为相对路径:
storeFile=upload-keystore.jks
4. 优化Debug签名配置(可选但推荐)
你的Debug签名配置也用了自定义的keystore,其实Debug模式下Android会自动生成默认的debug keystore,没必要用自定义的,反而可能引发冲突。可以把build.gradle里的signingConfigs.debug删掉,让Debug模式使用默认签名:
signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } buildTypes { debug { // 这里不需要指定signingConfig,gradle会自动用默认的debug签名 } release { minifyEnabled true shrinkResources true signingConfig signingConfigs.release } }
最后执行清理和重新构建
修改完以上配置后,先执行清理命令:
flutter clean
然后重新构建AppBundle:
flutter build appbundle
备注:内容来源于stack exchange,提问作者CeSWo _

