flutter实现安卓打包:(以安卓Studio工具为例)
(1)创建key.jks文件
在安卓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项目
(2) 将创建的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
方法(一):
(3) 在项目目录下的android文件夹下,创建一个名为key.properties的文件,并打开粘贴下面的代码:
错误写法:
storePassword=123456
keyPassword=123456
keyAlias=key
storeFile=E:/Flutter/fluttershuqi/android/app/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
注意:后面连空格都不要有,不然也会报错
(4) 配置/android/app/build.gradle文件
- 进入项目目录的/android/app/build.gradle文件,在
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']
}
}
方法(二):
(3)配置build.gradle文件
buildTypes {
release {
signingConfig signingConfigs.debug
}
}
为:
signingConfigs {
release {
keyAlias 'key'
keyPassword '123456'
storeFile file('key.jks')
storePassword '123456'
}
debug {
keyAlias 'key'
keyPassword '123456'
storeFile file('key.jks')
storePassword '123456'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
(4)打包 生成apk
输入命令:flutter build apk 即生成安装包,安装包位置:E:\Flutter\myflutter\build\host\outputs\apk\release ,即在项目build文件夹下。
(5)关于备注内容
- 修改应用名称和logo:
|