Flutter打包Android应用apk签名

官方教程,点击查看

创建密钥

  1. keytool 可能不在我们的系统路径中,运行 flutter doctor -v,”Java binary at:” 之后打印出来的就是它的路径。
  2. 只有 Java 9 或更高版本才需要 -storetype JKS 标签。从 Java 9 版本开始,keystore 类型默认为 PKS12。
# 打开cmd,定位到步骤1中的路径
cd D:\Android\Android Studio\jre\bin\
# 执行下面的命令生成key.jks
keytool -genkey -v -keystore D:/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key

生成upload-key

keystore - 如果你想要储存在其他地方,请通过指定 -keystore 传入参数,这里放在D盘根目录下。

alias - 指定别名

创建密钥时,根据提示自行补充必要信息

创建key.properties文件

文件创建位置工程根目录/android/key.properties,填入以下信息

storePassword=<上一步骤中的密码>
keyPassword=<上一步骤中的密码>
keyAlias=upload
storeFile=<密钥库的位置,e.g. /Users/<用户名>/upload-keystore.jks>

举例:

storePassword=123456
keyPassword=123456
keyAlias=key
storeFile=D:/key.jks

在 gradle 中配置签名

修改 工程根目录/android/app/build.gradle 文件.

  1. android 代码块之前将你 properties 文件的密钥库信息添加进去:
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
# 在此处添加上面的代码,将 key.properties 文件加载到 keystoreProperties 对象中
android {
...
}
  1. 找到 buildTypes 代码块:
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 keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}

现在我们 app 的发布版本就会被自动签名了。当你更改 gradle 文件后,也许需要运行一下 flutter clean。这将防止缓存的版本影响签名过程。

发布apk

执行命令:

# 首先清理下
flutter clean
# 执行打包命令
flutter build apk

打包成功

打包成功,apk在android\app\outputs\flutter-apk\目录下。