人人都会AI编程

25.5 移动端打包、签名与发布

更新时间:2026-07-11

Tauri 2.x 开始正式支持移动端(Android 和 iOS),这意味着你可以用同一套前端代码和 Rust 后端,构建出桌面端和移动端的原生应用。移动端的打包、签名与发布比桌面端稍显复杂,因为需要处理平台特有的证书和商店流程,但 Tauri CLI 已经帮我们封装了大量细节。

以下内容基于 Tauri 2.x 稳定版,操作环境建议在 macOS(可以同时构建 iOS 和 Android)或 Linux/Windows(仅 Android)。


1. 环境准备

  • Android

需要安装 Android Studio、JDK 17+、Android SDK(API 30 以上)、NDK。设置 ANDROID_HOMEJAVA_HOME 环境变量。建议通过 Android Studio 的 SDK Manager 勾选 NDK (Side by side) 和必要的构建工具。
检查命令:rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android

  • iOS

你必须有 macOS 和 Xcode(15 以上),并且登录了 Apple 开发者账号。需要安装 Xcode Command Line Tools。
检查命令:xcode-select --install,然后添加 Rust 目标:rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim


2. Tauri 移动端项目结构

一个标准 Tauri 移动端项目目录类似:

src-tauri/
  src/
  Cargo.toml
  tauri.conf.json
  gen/android/     # Android 原生工程(由 tauri android init 生成)
  gen/ios/         # iOS 原生工程(由 tauri ios init 生成)

初始化命令:
npx tauri android initnpx tauri ios init 会自动生成对应的原生工程目录。你可以直接用 Android Studio 打开 gen/android,用 Xcode 打开 gen/ios,进行进一步的配置和签名。


3. Android 打包与签名

开发模式调试
使用 npx tauri android dev 可以启动开发服务器,编译 Rust 为 Android 动态库,并安装到连接的设备或模拟器上。需要提前创建 AVD 或连接真机并开启 USB 调试。

发布包构建

  • 生成未签名的 APK

npx tauri android build --apk 会在 src-tauri/gen/android/app/build/outputs/apk/release/ 下生成 app-release-unsigned.apk

  • 生成 AAB(推荐上架 Google Play)

npx tauri android build --aab 会生成 app-release.aab

签名配置
默认的 debug key 不能用于发布。你需要在 Android 原生工程中配置签名文件:

  1. 生成 keystore:

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

  1. 将生成的 .jks 文件放入 src-tauri/gen/android/ 下。
  2. src-tauri/gen/android/app/build.gradle.kts 中添加签名配置(或创建 keystore.properties 文件并在 build.gradle 中引用)。

Tauri 自动生成的项目默认包含从环境变量读取签名配置的占位代码,你可以直接在 android/app/build.gradle.ktssigningConfigs 中指定 storeFile, storePassword, keyAlias, keyPassword

更安全的方式:通过环境变量传入密钥密码,避免在版本控制中硬编码。例如:

   signingConfigs {
       create("release") {
           storeFile = file("my-release-key.jks")
           storePassword = System.getenv("KEYSTORE_PASSWORD")
           keyAlias = "my-key-alias"
           keyPassword = System.getenv("KEY_PASSWORD")
       }
   }
   

然后在 CI 或本地设置环境变量。

  1. 再次运行 npx tauri android build --aab,签名会自动包裹进 AAB 中。

4. iOS 打包与签名

开发模式调试
npx tauri ios dev 会构建 Rust 库并在模拟器中启动应用。真机调试需要先将 iPhone 连接到 Mac,并在 Xcode 中配置好团队签名。首次运行可能会提示“不受信任的开发者”,需要在设备上手动信任证书。

发布包构建

  • 生成归档(Archive):推荐直接用 Xcode 操作,因为 Tauri CLI 对 iOS 发布的支持偏底层。
  1. 打开 src-tauri/gen/ios/TauriApp.xcodeproj(或你的项目名)。
  2. 在 Xcode 中,选择目标设备为 “Any iOS Device (arm64)”。
  3. 菜单栏 Product → Archive,等待编译完成。
  4. 在 Organizer 窗口中,选择刚生成的 Archive,点击 Distribute App,按提示操作(App Store Connect、Ad Hoc、Enterprise 等)。
  • 命令行构建(用于 CI):

npx tauri ios build --scheme "your-scheme" --configuration Release
通常会调用 xcodebuild 完成 archive。还需要用到 exportOptions.plist 指定分发方式。Tauri 官方文档提供了详细模板。

签名管理
iOS 签名分两种模式:

  • 自动签名(推荐):在 Xcode 项目设置中勾选 “Automatically manage signing”,选择你的 Team。Xcode 会自动处理证书和 Provisioning Profile。
  • 手动签名:适合复杂的企业组织,需在 Apple Developer 后台生成证书和 profile,再在 Build Settings 中指定。

对于 App Store 提审,必须使用 Distribution 证书和 App Store Provisioning Profile。


5. 通用注意事项

  • Rust 代码与前端

移动端的 Rust 代码编译为动态库(Android 为 .so,iOS 为 .a),前端资源打包到原生资源目录。所有 Tauri API(如文件系统、通知)在移动端也可以使用,但注意有些 API 在移动端有权限限制,需要在 tauri.conf.json > app > permissions 中声明。

  • 图标和启动画面

使用 npx tauri icon icon.png 生成所有平台的图标。Tauri 会自动将图标拷贝到 Android/iOS 工程中。启动画面需要在原生工程中自定义(storyboardsplash 资源)。

  • 版本号一致性

tauri.conf.json 中的 version 是主版本号,Android 和 iOS 还有自己的 versionCodeCFBundleVersion,它们通常从 version 生成,但也可以在 tauri.conf.json > bundle > android > versionCodeios > buildNumber 中显式设置。

  • CI/CD

GitHub Actions 可以使用官方 actions 来构建移动端。例如 tauri-apps/tauri-action@v0 支持设置 args: --target android 等。iOS 构建需要 macOS 环境,并且提前注入证书和 provisioning profile(常用 fastlane match)。


6. 发布到应用商店

  • Google Play

在 Google Play Console 创建应用,上传签名后的 AAB 文件。注意签名密钥一旦丢失无法找回,务必妥善备份。还可以启用 Google Play App Signing,用 Google 的密钥替换你的上传密钥。

  • Apple App Store

通过 Xcode 或 Transporter 上传 Archive 到 App Store Connect。需要填写应用元数据、隐私政策、截图等。首次提交可能需要通过审核,非首次通常 24 小时内完成。

  • 测试分发
  • Android:可以用 Internal Testing Track 分享链接,无需审核。
  • iOS:使用 TestFlight,需要邀请内部或外部测试员,外部测试员需要审核 Beta 版。

以上流程可以覆盖大多数中小型应用的移动端打包和发布场景。Tauri 把 Rust 的原生能力和 Web 前端很好地桥接到了移动端,虽然配置比桌面端多一些,但一旦搭建完成,后续迭代就和桌面端一样顺手。