为 Tauri APK 签名

Tauri 是一个可以开发跨平台应用的框架,支持使用前端技术(如 HTML、CSS、JavaScript)构建桌面和移动端应用。在 Android 平台上,生成的 APK 文件需要进行签名才能在设备上安装或发布到应用商店(如 Google Play)。

本文介绍使用 keytool 进行签名。

预先准备

从 Android Developers 网站下载并安装 Android Studio

安装后配置环境变量 JAVA_HOME 值为 Android Studio 安装目录下的 jbr 目录。

接着打开设置安装 SDK。

image-tgowompm.png

勾选以上项目进行安装。

安装后,再增加两个环境变量。

  • ANDROID_HOME,值为 Android SDK Location,我的设置为 D:\Android\Sdk
  • NDK_HOME,值为 Android SDK Location 下的 ndk 安装目录。我的设置为 D:\Android\Sdk\ndk\29.0.13113456

初始化项目

# 创建 tauri 项
pnpm create tauri-app 目
# 安装依赖
pnpm install
# 增加 Android 平台编译目标
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
# 初始化 Android 开发配置
npx tauri android init
# 测试 Android 
npx tauri android dev
# 构建 Android
npx tauri android build

如果直接进行构建,尽管可以生成 APK 文件,但在安装时系统会提示安装包无效,无法安装。

这是因为没有证书导致的。

Android 系统要求所有 APK 在安装前都必须经过数字签名。这是为了确保应用的完整性和来源的可信性。未签名或使用错误密钥签名的 APK 将无法被安装或更新。

生成签名

keytool 是 Java 数据证书管理工具。

可以在 Android Studio 安装目录下的 /jbr/bin/ 目录中找到 keytool.exe

keytool -genkey -v -keystore 自定义的数据文件名称 -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias 自定义的证书别名

之后按照提示进行输入即可。

如果是要上架应用商店的,要如实填写。否则可能会导致因信息不对从而上架失败。

输入完毕,确认后,工具会要求设置密码。记住密码,后面会用到。

完成以上操作后,在当前工作目录下会生成一个 自定义的数据文件名称.keystore 文件。

打包时签名

创建 src-tauri/gen/android/keystore.properties 文件。

文件内容如下:

storePassword=数据文件密码
keyPassword=证书密码
keyAlias=自定义的证书别名
storeFile=自定义的数据文件名称.keystore

需要注意,在 windows 下,storeFile 路径需要 C:\\Program Files\\Android 这样的格式。

随后找到 src-tauri/gen/android/app/build.gradle.kts 文件。

增加以下内容:

import java.io.FileInputStream

// ...
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
  }
}
// ...

// ...
signingConfig = signingConfigs.getByName("release")

image-srbfdkcu.png

配置完毕之后,重新打包,APK 安装成功。


为 Tauri APK 签名
http://www.inksha.com/archives/wei-tauri-apk-qian-ming
作者
inksha
发布于
2025年04月29日
许可协议