前言
我们需要将App进行数字签名才能发布到商店里。在这里就具体描述一下如果给App添加签名
为App签名
创建一个用户上传的秘钥库
如果你已经有一个秘钥库了,可以直接跳到下一步,如果没有则按照下面的指令创建一个
|
打开电脑终端执行以下指令
# macOS或者Linux系统上 keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload #在windows系统上 keytool -genkey -v -keystore %userprofile%\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload |
从App中引用秘钥库
在项目/android/key.properties文件,它包含了密钥库的位置的定义。在替换内容时要去除< >括号。
storePassword和keyPassword的值都是上一步生成文件时我们自己输入的
storeFile
密钥路径在 macOS 上类似于 /Users/<user name>/upload-keystore.jks
,在 Windows 上类似于 C:\\Users\\<user name>\\upload-keystore.jks
。
storePassword=<password-from-previous-step> keyPassword=<password-from-previous-step> keyAlias=upload storeFile=<keystore-file-location> |
在gradle中配置签名
在以 release 模式下构建你的应用时,修改 项目/android/app/build.gradle
文件,以通过 gradle 配置你的上传密钥
1.在 android
代码块之前将你 properties 文件的密钥库信息添加进去,将 key.properties
文件加载到 keystoreProperties
对象中。
def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } android { ... } |
2.找到 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
。这将防止缓存的版本影响签名过程。
flutter clean flutter pub get |
打包指令
#abb格式 flutter build appbundle #apk格式 flutter build apk |