跳到内容
Tauri

Android 代码签名

要在 Play 商店发布,您需要使用数字证书对您的应用进行签名。

Android App Bundles 和 APKs 必须在上传分发前进行签名。

Google 还为在 Play 商店中分发的 Android App Bundles 提供了额外的签名机制。有关更多信息,请参阅官方 Play 应用签名文档

Android 签名需要一个 Java 密钥库文件,可以使用官方的 keytool CLI 生成。

keytool -genkey -v -keystore ~/upload-keystore.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=upload
storeFile=<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 在发布模式下构建应用时使用您的上传密钥。

  1. 在文件开头添加所需的导入

    import java.io.FileInputStream
  2. 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 String
    keyPassword = keystoreProperties["password"] as String
    storeFile = file(keystoreProperties["storeFile"] as String)
    storePassword = keystoreProperties["password"] as String
    }
    }
    buildTypes {
    ...
    }
  3. buildTypes 块中的 release 配置中使用新的 release 签名配置

    buildTypes {
    getByName("release") {
    signingConfig = signingConfigs.getByName("release")
    }
    }

您的应用的发布版本现在将自动签名。


© 2025 Tauri 贡献者。CC-BY / MIT