Flutter App签名打包
app签名
Android系统在安装APK的时候,首先会检验APK的签名,如果发现签名文件不存在或者校验签名失败,则会拒绝安装,所以应用程序在发布之前一定要进行签名。
创建一个秘钥库
在 Windows 系统上,执行下面的命令
注意:参数validity为有效天数
keytool -genkey -v -keystore D:/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
执行后会在你的D盘根目录生成key.jks文件。
注意:保持文件私密; 不要将它加入到公共源代码控制中。
注意:keytool可能不在你的系统路径中。它是Java JDK的一部分,它是作为Android Studio的一部分安装的。有关具体路径,请百度。
如果你安装了jdk,提示keytool命令不存在,则需要将jdk安装目录(C:\Program Files\Java\jdk-15.0.2\bin)添加到你的用户环境变量Path中
在应用程序中引用秘钥库
创建一个名为/android/key.properties的文件,其中包含对密钥库的引用:
storePassword=秘钥库口令
keyPassword=秘钥库口令
keyAlias=key
storeFile=key.jks文件路径
注意:这个文件一般不要提交到代码仓库
修改.gitignore文件
# Android ignore
/android/key.properties
在gradle中配置签名
1.替换
android {
为:
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
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
}
}
现在我们发布的app就会被自动签名了
打包应用程序
目前Android支持打包两种应用程序:APK、AAB APK文件: Android application package
# 运行 flutter build apk (flutter build 默认带有 --release 参数)
flutter build apk
AAB文件: Android App Bundle Google推出的一种新的上传格式,某些应用市场不支持的 会根据用户打包的aab文件,动态生成用户设备需要的APK文件
# 运行 flutter build appbundle。 (运行 flutter build 默认构建一个发布版本。)
flutter build appbundle
参考来源: