Files
blog-press/docs/Flutter/Practice.md
2025-12-03 19:56:05 +08:00

71 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 安卓签名
  每次安装/升级软件必须使用同一个签名,否则会将本地数据全部清空。
## 1. 生成密钥库文件
  使用keytool命令生成
```cmd
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文件并配置信息
```properties
# 密钥库文件的密码
storePassword=12345678
# 密钥本身的密码
keyPassword=12345678
# 密钥的别名,在密钥库中标识具体的密钥
keyAlias=my-key
# 密钥库文件相对于本配置文件的路径
storeFile=my-release-key.keystore
```
## 3. 配置build.gradle.kts
```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块内新增签名配置
```kts
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包时即可生效签名。
> [!CAUTION]
> 禁止将签名文件上传到Git仓库中。