flutter实现安卓打包:(以安卓Studio工具为例)
(1)创建key.jks文件
在安卓studio中调整至项目路径,例如:
我的项目所在地
然后输入命令:
- 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 //输入上一步创建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
复制代码 注意:后面连空格都不要有,不然也会报错
(4) 配置/android/app/build.gradle文件
- 进入项目目录的/android/app/build.gradle文件,在
上面添加:
- 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')//此种写法默认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
- }
- }
复制代码 (4)打包 生成apk
输入命令:flutter build apk
即生成安装包,安装包位置:E:\Flutter\myflutter\build\host\outputs\apk\release,即在项目build文件夹下。
(5)关于备注内容
- 修改应用名称和logo:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |