-
检查App Manifest
-
检查构建配置
-
添加启动图标
以上几个步骤详细可以查看官方文档 发布Android版APP,文档写的很详细,这里不累述。
-
App 签名
创建keystore
在 Android Studio 的Terminal 下运行:
flutter doctor -v找到 Java binary at:所在的路径, 然后 进入该目录 运行命令:
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
命令 | 介绍 |
---|---|
-genkey | 在用户主目录中创建一个key.jks文件 |
-v | 显示密钥库中的证书详细信息 |
-alias | 产生别名 |
-keyalg | 指定密钥的算法 |
-keystore | 指定密钥库的名称(产生的各类信息将不在.jks文件中 |
-validity | 指定创建的证书有效期多少天 |
-keysize | 指定密钥长度 |
秘钥库口令一定要记住!!!
然后在D盘根目录下就会生成一个key.jks文件,记住:不要把这个jks文件共享给任何人!!不要把这个jks文件共享给任何人!!不要把这个jks文件共享给任何人!!
尤其是只图方便把源码一股脑签入github的XX。
引用应用程序中的keystore
创建一个名为app dir/android/key.properties的文件,其中包含对密钥库的引用:
storePassword= password from previous step keyPassword= password from previous step keyAlias= key storeFile= location of the key store file, e.g. /Users/user name/key.jks
命令 | 介绍 |
---|---|
storePassword | keystore 密码 |
keyPassword | key密码 |
keyAlias | key别名 |
storeFile | .jks文件路径 |
注意: 保持文件私密; 不要将它加入公共源代码控制中
在gradle中配置签名
通过编辑/android/app/build.gradle文件为您的应用配置签名
1.替换: android { 为:
def keystorePropertiesFile = rootProject.file("key.properties") def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android {
2.替换:
buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } }
为:
signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } buildTypes { release { signingConfig signingConfigs.release } }
现在,您的应用的release版本将自动进行签名。
构建一个发布版(release)APK 本节介绍如何构建发布版(release)APK。如果您完成了前一节中的签名步骤,则会对APK进行签名。
使用命令行:
cd ( 为您的工程目录). 运行flutter build apk (flutter build 默认会包含 --release选项). 打包好的发布APK位于/build/app/outputs/apk/app-release.apk。
在设备上安装发行版APK 按照以下步骤在已连接的Android设备上安装上一步中构建的APK
使用命令行:
用USB您的Android设备连接到您的电脑 cd . 运行 flutter install .