Flutter运行release模式报错:找不到未知属性'keystoreProperties'
问题核心原因
- 变量声明顺序错误:你把
keystoreProperties变量的定义和加载逻辑写在了android配置块的后面,Gradle是按从上到下的顺序执行代码的,当解析到signingConfigs配置时,keystoreProperties还没被定义,所以直接报未知属性错误。 - 签名配置的键名取值错误:你在
signingConfigs中写的keystoreProperties['key password']这类写法不对,要和key.properties里定义的键名完全对应。 - Android Studio提示属性未使用就是因为前面的配置没能正确关联到
key.properties里的属性,属于顺序错误导致的连锁问题。
修复步骤
- 调整
keystoreProperties的定义位置,把这部分代码移动到android配置块的前面,放在apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"这行之后即可:
// 原来的其他代码... apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" // 把keystoreProperties相关代码移到这里 def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()){ keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } android { // 原来的android配置内容... }
- 修正
signingConfigs里的属性取值,要和key.properties的键名完全匹配:
signingConfigs{ release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } }
- 确认你存放签名配置的文件名是
key.properties,放在项目android目录下(和local.properties同目录),没有拼写错误。
修改完成后重新构建项目即可正常运行。
内容的提问来源于stack exchange,提问作者Moh Say 21
相关产品推荐
相关产品推荐

