参考官方文档:flutter.cn/docs/deploy…
1. 生成签名
-
打开jdk 的运行目录,如
C:\Program Files\Java\jdk1.8.0_311\bin -
找到有没有
keytool.exe文件,再打开cmd程序,执行以下命令,按照命令提示输入完成步骤后,结果生成一个密钥my_key.jks文件(重要文件请做好备份),放到d盘根目录下,有C:\my_key.jks
C:\Program Files\Java\jdk1.8.0_202\bin> .\keytool -genkey -v -keystore c:/my_key.jks -keyalg RSA -keysize 2040 -validity 10000 -alias key
遇到的问题 keytool 错误: java.io.FileNotFoundException: c:\my_key.jks (拒绝访问。)
管理员身份运行命令提示符
2. 打包
- 打开Android Studio中的flutter项目(没有的话自己创建),在根目录下有android目录,创建一个配置文件
/android/key.properties,内容如下,以下密码是自己创建密钥时填的,自己替换即可
storePassword = <库密钥密码>
keyPassword = <密钥密码>
keyAlias = key
storeFile = D:\\my_key.jks
记得把<>去掉!!
storePassword=123456 //密码
keyPassword=123456//密码
keyAlias=flutter_key //别名
storeFile=../flutter_key_store.jks //key文件路径,在Android目录下
- 在/android/app/build.gradle文件中插入以下几段代码
def localProperties = new Properties()
//...
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
localProperties.load(new FileInputStream(keystorePropertiesFile))
}
//...
android {
//...
signingConfigs {
release {
keyAlias localProperties['keyAlias']
keyPassword localProperties['keyPassword']
storeFile file(localProperties['storeFile'])
storePassword localProperties['storePassword']
}
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
signingConfig signingConfigs.release
//...
}
}
}
flutter {
//...
}
最后执行flutter build apk 发布正式版
运行flutter build apk (flutter build 默认会包含 --release选项)。 打包好的APK位于/build/app/outputs/apk/app-release.apk。
3. 查看签名
方法1. 解析
在有签名文件的情况下获取应用签名:
keytool -list -v -keystore 签名文件路径
keytool -list -v -keystore c:/my_key.jks
显示如下
MD5: 8D:DB:34:2F:2D:A5:40:84:02:D7:56:8A:F2:1E:29:F9
把MD5值大写转小写后删除冒号就是我们需要的签名了
8ddb342f2da5408402d7568af21e29f9
方法2. 使用工具查看
下载“签名生成工具”并安装到手机。在该手机上安装正式打包的APK并运行,通过签名生成工具输入包名get signature获取应用签名,copy to clipboard即可。
在此贴出通过查询keystore获取的MD5,以作对比