【Flutter】Flutter 中编译 Android 应用 apk 安装包对应的签名文件配置 ( Flutter 编译 release 版本 apk 使用默认签名文件 | 使用自定义签名文件 )
2026/9/4 7:47:15 网站建设 项目流程

文章目录

  • 一、Flutter 编译 release 版本 apk 使用默认签名文件
    • 1、Flutter 编译 Release APK 的签名文件
    • 2、默认签名文件位置
    • 3、debug.keystore 默认签名文件密码
    • 4、验证 MacOS 中的 debug.keystore 默认签名文件
    • 5、验证 Windows 中的 debug.keystore 默认签名文件
  • 二、Flutter 编译 release 版本 apk 使用自定义签名文件
    • 1、准备签名文件
    • 2、配置签名信息
    • 3、配置构建脚本
    • 4、构建 Release APK
    • 5、备选方案 : 直接在 build.gradle 构建脚本中硬编码
    • 6、其它常见问题

参考文档 :

  • Flutter 官方文档 : https://docs.flutter.dev/install/quick
  • 使用出现网络问题 , 参考 在中国网络环境下使用 Flutter 文档 ;
  • 使用 VS Code 开发 Flutter 环境安装 :https://docs.flutter.cn/install/with-vs-code
  • VS Code 安装 :https://code.visualstudio.com/docs/setup/setup-overview




一、Flutter 编译 release 版本 apk 使用默认签名文件




1、Flutter 编译 Release APK 的签名文件


开发 Flutter 应用时 , 执行flutter build apk --release命令编译 Android 的 release 版本的 apk 安装包 , 有以下两种情况 :

  • 如果在项目的android/app/build.gradle中显式配置signingConfigs.release, 则使用该签名配置对 apk 包进行签名 ;
  • 如果没有在项目的android/app/build.gradle中显式配置signingConfigs.release, 则使用 SDK 默认生成的 debug.keystore 签名文件 ;

2、默认签名文件位置


只有 Debug 构建 (flutter run/flutter build apk --debug) 会自动使用 Android SDK 生成的默认调试签名文件debug.keystore, 不同系统路径如下 :

  • MacOS 系统的 debug.keystore 签名文件 默认路径 :~/.android/debug.keystore, 对应的完整绝对路径格式 是/Users/你的用户名/.android/debug.keystore;
  • Windows 系统的 debug.keystore 签名文件 默认路径 :%USERPROFILE%\upload-keystore.jks, 对应的 完整绝对路径格式 是C:\Users\你的用户名\.android\debug.keystore;

3、debug.keystore 默认签名文件密码


debug.keystore 默认签名文件密码 :

  • 密钥库密码 :android
  • 密钥别名 :androiddebugkey
  • 密钥密码 :android

4、验证 MacOS 中的 debug.keystore 默认签名文件


MacOS 中 debug.keystore 签名文件的位置是 “~/.android/debug.keystore” ,

在 MacOS 中 验证 本机~/.android/debug.keystore的 密码 和 别名 ;

Last login: Thu Jul1617:30:13 on ttys008 hsl@hanshuliangdeMacBook-Air ~ % keytool-list-keystore~/.android/debug.keystore-storepassandroid2>&1|head-20密钥库类型: jks 密钥库提供方: SUN 您的密钥库包含1个条目 androiddebugkey,2025-6-16, PrivateKeyEntry, 证书指纹(SHA1): E5:4A:5C:B0:35:09:E8:92:D8:A1:24:1C:42:56:D4:EA:2A:47:32:A4 Warning: JKS 密钥库使用专用格式。建议使用"keytool -importkeystore -srckeystore /Users/hsl/.android/debug.keystore -destkeystore /Users/hsl/.android/debug.keystore -deststoretype pkcs12"迁移到行业标准格式 PKCS12。


5、验证 Windows 中的 debug.keystore 默认签名文件


Windows 中的默认路径 " C:\Users<你的用户名>.android\debug.keystore " , 实际路径 " C:\Users\octop.android\debug.keystore " ;

在 C:\Users\octop.android 目录下 , 打开 命令行终端 , 执行

keytool-list-keystoreC:\Users\octop\.android\debug.keystore-storepassandroid

命令 , 执行结果 :

C:\Users\octop\.android>keytool-list-keystoreC:\Users\octop\.android\debug.keystore-storepassandroid 密钥库类型: JKS 密钥库提供方: SUN 您的密钥库包含1个条目 androiddebugkey,2025-6-16, PrivateKeyEntry, 证书指纹(SHA1): E5:4A:5C:B0:35:09:E8:92:D8:A1:24:1C:42:56:D4:EA:2A:47:32:A4





二、Flutter 编译 release 版本 apk 使用自定义签名文件



在 Flutter 中编译 Android release 版本的 APK 时 , 需要使用签名文件 ( 通常是 .jks 或 .keystore ) 对应用进行签名 ; Flutter 本身没有提供命令行参数直接指定签名文件 , 而是通过修改 Android 项目的 Gradle 配置文件来实现 ;

以下是配置签名并构建 release APK 的标准步骤 :


1、准备签名文件


确保你已有一个.jks.keystore文件 ( 例如my-release-key.jks) , 并知道以下信息 :

  • 密钥库路径( 文件位置 )
  • 密钥库密码( storePassword )
  • 密钥别名( keyAlias )
  • 密钥密码( keyPassword )

如果没有签名文件 , 可用keytool命令生成 :

keytool-genkey-v-keystoremy-release-key.jks-keyalgRSA-keysize2048-validity10000-aliasmy-key-alias

2、配置签名信息


推荐使用key.properties存储签名文件信息 :为避免将敏感信息硬编码在build.gradle中 , 推荐在 Android 项目根目录创建key.properties文件 ;

key.properties文件与build.gradle构建脚本同级 , 即android/key.properties, 内容如下 :

storePassword=你的密钥库密码keyPassword=你的密钥密码keyAlias=你的密钥别名storeFile=../my-release-key.jks# 相对于 android/ 目录的路径 , 或绝对路径

注意:storeFile路径是相对于android/app/目录的 ; 上面写../表示将 jks 文件放在android/目录下 ; 如果 jks 放在其他位置 , 请使用相对于android/app/的路径或绝对路径 ;


3、配置构建脚本


打开android/app/build.gradle构建脚本 ,

首先 , 在文件开头android {之前 , 加载key.properties:

defkeystoreProperties=newProperties()defkeystorePropertiesFile=rootProject.file('key.properties')if(keystorePropertiesFile.exists()){keystoreProperties.load(newFileInputStream(keystorePropertiesFile))}

然后 , 在android {块内添加signingConfigs配置 :

android{...signingConfigs{release{if(keystorePropertiesFile.exists()){storeFilefile(keystoreProperties['storeFile'])storePassword keystoreProperties['storePassword']keyAlias keystoreProperties['keyAlias']keyPassword keystoreProperties['keyPassword']}}}...}

最后 , 在buildTypes.release中引用该签名配置 :

buildTypes{release{signingConfig signingConfigs.release// 其他配置...}}

完整示例片段 :

defkeystoreProperties=newProperties()defkeystorePropertiesFile=rootProject.file('key.properties')if(keystorePropertiesFile.exists()){keystoreProperties.load(newFileInputStream(keystorePropertiesFile))}android{...signingConfigs{release{if(keystorePropertiesFile.exists()){storeFilefile(keystoreProperties['storeFile'])storePassword keystoreProperties['storePassword']keyAlias keystoreProperties['keyAlias']keyPassword keystoreProperties['keyPassword']}}}buildTypes{release{signingConfig signingConfigs.release}}}

4、构建 Release APK


在项目根目录执行 :

flutter build apk--release

命令 , 构建完成后 , APK 文件位于build/app/outputs/flutter-apk/app-release.apk;


5、备选方案 : 直接在 build.gradle 构建脚本中硬编码


如果不想使用key.properties, 可以直接在signingConfigs中写死路径和密码 :

signingConfigs{release{storeFilefile("路径/到/你的.jks")storePassword"密码"keyAlias"别名"keyPassword"密码"}}

但这样做会将敏感信息提交到版本控制系统 , 存在安全风险 ;


6、其它常见问题


其它常见问题 :

  • key.properties未找到: 确保文件位于android/目录下 , 且文件名正确 ;
  • storeFile路径错误: 检查相对路径是否正确 , 或改用绝对路径 ;
  • 签名失败: 确认密码、别名与 jks 文件中的信息一致 ;
  • 构建时使用了 debug 签名: 检查buildTypes.release是否设置了signingConfig signingConfigs.release;

通过以上步骤 , 即可在 Flutter 构建 Android release APK 时指定 jks 签名文件 ;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询