Android 代码签名
要在 Play 商店发布应用,您需要使用数字证书对应用进行签名。
Android App Bundle (AAB) 和 APK 在上传分发前必须进行签名。
Google 还为分发到 Play 商店的 Android App Bundle 提供了一种额外的签名机制。更多信息请参阅官方 Play App 签名文档。
Android 签名需要一个 Java 密钥库 (Keystore) 文件,该文件可以使用官方的 keytool CLI 生成
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias uploadkeytool -genkey -v -keystore $env:USERPROFILE\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload此命令将 upload-keystore.jks 文件存储在您的主目录中。如果您希望将其存储在其他位置,请更改传递给 -keystore 参数的路径。
更多信息请参见官方文档。
创建一个名为 [project]/src-tauri/gen/android/keystore.properties 的文件,其中包含对您的密钥库的引用
password=<password defined when keytool was executed>keyAlias=uploadstoreFile=<location of the key store file, such as /Users/<user name>/upload-keystore.jks or C:\\Users\\<user name>\\upload-keystore.jks>通常您会在 CI/CD 平台中生成此文件。以下片段包含了 GitHub Actions 的作业步骤示例
- name: setup Android signing run: | cd src-tauri/gen/android echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > keystore.properties echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> keystore.properties base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $RUNNER_TEMP/keystore.jks echo "storeFile=$RUNNER_TEMP/keystore.jks" >> keystore.properties在此示例中,密钥库通过 base64 -i /path/to/keystore.jks 导出为 base64,并设置为 ANDROID_KEY_BASE64 密钥。
通过编辑 [project]/src-tauri/gen/android/app/build.gradle.kts 文件,配置 Gradle 在 release 模式下构建应用时使用您的上传密钥。
-
在文件开头添加必要的导入
import java.io.FileInputStream -
在
buildTypes代码块之前添加release签名配置signingConfigs {create("release") {val keystorePropertiesFile = rootProject.file("keystore.properties")val keystoreProperties = Properties()if (keystorePropertiesFile.exists()) {keystoreProperties.load(FileInputStream(keystorePropertiesFile))}keyAlias = keystoreProperties["keyAlias"] as StringkeyPassword = keystoreProperties["password"] as StringstoreFile = file(keystoreProperties["storeFile"] as String)storePassword = keystoreProperties["password"] as String}}buildTypes {...} -
在
buildTypes代码块的release配置中使用新的release签名配置buildTypes {getByName("release") {signingConfig = signingConfigs.getByName("release")}}
现在,您的应用在发布版本构建时将自动进行签名。
© 2026 Tauri 贡献者。CC-BY / MIT