Flutter项目打包生成APK

打印 上一主题 下一主题

主题 763|帖子 763|积分 2289

flutter实现安卓打包:(以安卓Studio工具为例)

(1)创建key.jks文件

在安卓studio中调整至项目路径,例如:
我的项目所在地
  1. E:\Flutter\fluttershuqi>
复制代码
然后输入命令:
  1. keytool -genkey -v -keystore E:\Flutter\fluttershuqi\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
复制代码
最后的alias key , key指的是签名文件的别名。
其中E:\Flutter\fluttershuqi是我希望.jks文件创建的位置,
  1. E:\Flutter\textdemo>keytool -genkey -v -keystore E:\Flutter\fluttershuqi\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
  2. 输入密钥库口令:
  3. 再次输入新口令:
  4. 您的名字与姓氏是什么?
  5.   [Unknown]:  1
  6. 您的组织单位名称是什么?
  7.   [Unknown]:  2
  8. 您的组织名称是什么?
  9.   [Unknown]:  3
  10. 您所在的城市或区域名称是什么?
  11.   [Unknown]:  4
  12. 您所在的省/市/自治区名称是什么?
  13.   [Unknown]:  5
  14. 该单位的双字母国家/地区代码是什么?
  15.   [Unknown]:  6
  16. CN=1, OU=2, O=3, L=4, ST=5, C=6是否正确?
  17.   [否]:  Y
  18. 正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 10,000 天):
  19.          CN=1, OU=2, O=3, L=4, ST=5, C=6
  20. 输入 <key> 的密钥口令
  21.         (如果和密钥库口令相同, 按回车):
  22. [正在存储E:\Flutter\fluttershuqi\key.jks]
  23. Warning:
  24. JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore E:\Flutter\fluttershuqi\key.jks -destkeystore E:\Flutter\fluttershuqi\key.jks -deststoretype pkcs1
  25. 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的文件,并打开粘贴下面的代码:

错误写法:
  1. storePassword=123456   //输入上一步创建KEY时输入的 密钥库 密码
  2. keyPassword=123456    //输入上一步创建KEY时输入的 密钥 密码
  3. keyAlias=key
  4. storeFile=E:/Flutter/fluttershuqi/android/app/key.jks    //key.jks的存放路径  此处要是用/而不是\
复制代码
此处是我自己遇到的问题,中间一直找不到问题,最后才发现这个文件注释不是//而是#,我开始错误使用了//导致一直报如下错,这是将后面的空格和//的内容都识别到key路径中了,所以才会找不到。
  1. * What went wrong:
  2. Execution failed for task ':app:validateSigningRelease'.
  3. > Keystore file 'E:\Flutter\fluttershuqi\android\app\key.jks   \key.jks????��??��??' not found for signing config 'release
  4. '.
复制代码
正确写法:
  1. storePassword=123456
  2. keyPassword=123456
  3. keyAlias=key
  4. storeFile=E:/Flutter/fluttershuqi/android/app/key.jks
复制代码
注意:后面连空格都不要有,不然也会报错
(4) 配置/android/app/build.gradle文件



  • 进入项目目录的/android/app/build.gradle文件,在
  1. android {}
复制代码
上面添加:
  1. def keystorePropertiesFile = rootProject.file("key.properties")
  2. def keystoreProperties = new Properties()
  3. keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
复制代码


  • 修改
  1. buildTypes {
  2.     release {
  3.         signingConfig signingConfigs.debug
  4.     }
  5. }
复制代码
为:
  1. buildTypes {
  2.         release {
  3.             signingConfig signingConfigs.release
  4.         }
  5.     }
复制代码


  • 添加:
  1. signingConfigs {
  2.         release {
  3.             keyAlias keystoreProperties['keyAlias']
  4.             keyPassword keystoreProperties['keyPassword']
  5.             storeFile file(keystoreProperties['storeFile'])
  6.             storePassword keystoreProperties['storePassword']
  7.         }
  8.     }
复制代码
方法(二):

(3)配置build.gradle文件



  • 修改
  1. buildTypes {
  2.     release {
  3.         signingConfig signingConfigs.debug
  4.     }
  5. }
复制代码
为:
  1. signingConfigs {
  2.         release {
  3.                 keyAlias 'key'
  4.                 keyPassword '123456'
  5.                 storeFile file('key.jks')//此种写法默认key文件在android-app文件夹下
  6.                 storePassword '123456'
  7. //            keyAlias keystoreProperties['keyAlias']
  8. //            keyPassword keystoreProperties['keyPassword']
  9. //            storeFile file(keystoreProperties['storeFile'])
  10. //            storePassword keystoreProperties['storePassword']
  11.         }
  12.         debug {
  13.             keyAlias 'key'
  14.             keyPassword '123456'
  15.             storeFile file('key.jks')
  16.             storePassword '123456'
  17. //            keyAlias keystoreProperties['keyAlias']
  18. //            keyPassword keystoreProperties['keyPassword']
  19. //            storeFile file(keystoreProperties['storeFile'])
  20. //            storePassword keystoreProperties['storePassword']
  21.         }
  22.     }
  23.   buildTypes {
  24.         release {
  25.             signingConfig signingConfigs.release
  26.         }
  27.         debug {
  28.             signingConfig signingConfigs.release
  29.         }
  30.     }
复制代码
(4)打包 生成apk

输入命令:flutter build apk
即生成安装包,安装包位置:E:\Flutter\myflutter\build\host\outputs\apk\release,即在项目build文件夹下。
(5)关于备注内容



  • 修改应用名称和logo:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表