在安卓studio中调整至项目路径,例如:
我的项目所在地
E:\Flutter\fluttershuqi>
然后输入命令:
keytool -genkey -v -keystore E:\Flutter\fluttershuqi\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
最后的alias key
, key指的是签名文件的别名。
其中E:\Flutter\fluttershuqi
是我希望.jks文件创建的位置,
E:\Flutter\textdemo>keytool -genkey -v -keystore E:\Flutter\fluttershuqi\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: 1
您的组织单位名称是什么?
[Unknown]: 2
您的组织名称是什么?
[Unknown]: 3
您所在的城市或区域名称是什么?
[Unknown]: 4
您所在的省/市/自治区名称是什么?
[Unknown]: 5
该单位的双字母国家/地区代码是什么?
[Unknown]: 6
CN=1, OU=2, O=3, L=4, ST=5, C=6是否正确?
[否]: Y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 10,000 天):
CN=1, OU=2, O=3, L=4, ST=5, C=6
输入 <key> 的密钥口令
(如果和密钥库口令相同, 按回车):
[正在存储E:\Flutter\fluttershuqi\key.jks]
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore E:\Flutter\fluttershuqi\key.jks -destkeystore E:\Flutter\fluttershuqi\key.jks -deststoretype pkcs1
2" 迁移到行业标准格式 PKCS12。
此时你的key.jks文件就创建成功了,
如果此过程报错,请参考如何打包发布flutter项目
(1)方案一:直接放在android/app文件夹下,这样的话第3步中的storeFile写法为:
storeFile=key.jks
或者storeFile=E:/Flutter/fluttershuqi/android/app/key.jks
(2)也可以在app目录下再创建一个文件夹,例如文件夹key
storeFile=key/key.jks
或者storeFile=E:/Flutter/fluttershuqi/android/app/key/key.jks
错误写法:
storePassword=123456 //输入上一步创建KEY时输入的 密钥库 密码
keyPassword=123456 //输入上一步创建KEY时输入的 密钥 密码
keyAlias=key
storeFile=E:/Flutter/fluttershuqi/android/app/key.jks //key.jks的存放路径 此处要是用/而不是\
此处是我自己遇到的问题,中间一直找不到问题,最后才发现这个文件注释不是//而是#,我开始错误使用了//导致一直报如下错,这是将后面的空格和//的内容都识别到key路径中了,所以才会找不到。
* What went wrong:
Execution failed for task ':app:validateSigningRelease'.
> Keystore file 'E:\Flutter\fluttershuqi\android\app\key.jks \key.jks????��??��??' not found for signing config 'release
'.
正确写法:
storePassword=123456
keyPassword=123456
keyAlias=key
storeFile=E:/Flutter/fluttershuqi/android/app/key.jks
注意:后面连空格都不要有,不然也会报错
android {}
上面添加:
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
buildTypes {
release {
signingConfig signingConfigs.debug
}
}
为:
buildTypes {
release {
signingConfig signingConfigs.release
}
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.debug
}
}
为:
signingConfigs {
release {
keyAlias 'key'
keyPassword '123456'
storeFile file('key.jks')//此种写法默认key文件在android-app文件夹下
storePassword '123456'
// keyAlias keystoreProperties['keyAlias']
// keyPassword keystoreProperties['keyPassword']
// storeFile file(keystoreProperties['storeFile'])
// storePassword keystoreProperties['storePassword']
}
debug {
keyAlias 'key'
keyPassword '123456'
storeFile file('key.jks')
storePassword '123456'
// keyAlias keystoreProperties['keyAlias']
// keyPassword keystoreProperties['keyPassword']
// storeFile file(keystoreProperties['storeFile'])
// storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
输入命令:flutter build apk
即生成安装包,安装包位置:E:\Flutter\myflutter\build\host\outputs\apk\release
,即在项目build文件夹下。