Files
blog-press/docs/Flutter/Practice.md
2025-12-16 18:07:42 +08:00

2.2 KiB
Raw Blame History

title, date
title date
实战技巧 2025-12-03

安卓签名

  每次安装/升级软件必须使用同一个签名,否则会将本地数据全部清空。

1. 生成密钥库文件

使用keytool命令生成

keytool -genkey -v -keystore android/app/my-release-key.keystore -alias my-key -keyalg RSA -keysize 2048 -validity 10000

  根据提示输入相应信息。
my.keystore为自定义名称。生成后的文件位于android/app/文件夹内

2. 配置key.properties

在android文件夹内新建key.properties文件并配置信息

# 密钥库文件的密码
storePassword=12345678
# 密钥本身的密码
keyPassword=12345678
# 密钥的别名,在密钥库中标识具体的密钥
keyAlias=my-key
# 密钥库文件相对于本配置文件的路径
storeFile=my-release-key.keystore

3. 配置build.gradle.kts

import java.util.Properties
import java.io.FileInputStream

// 从根路径加载密钥属性
val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}

在android块内新增签名配置

android {
  // 签名配置
    signingConfigs {
        create("release") {
            if (keystorePropertiesFile.exists()) {
                keyAlias = keystoreProperties.getProperty("keyAlias")
                keyPassword = keystoreProperties.getProperty("keyPassword")
                storeFile = file(keystoreProperties.getProperty("storeFile"))
                storePassword = keystoreProperties.getProperty("storePassword")
            }
        }
    }

    buildTypes {

      release {
          signingConfig = if (keystorePropertiesFile.exists()) {
              // 使用发布签名
              signingConfigs.getByName("release")  
          } else {
              // 使用默认签名
              signingConfigs.getByName("debug")
          }
      }
    }
}

打包为release包时即可生效签名。

::: danger 禁止将签名文件上传到Git仓库中。 :::