tauri 是一个轻量、高性能的跨平台应用开发框架,这里展示了它的常用配置与命令清单
Bash
sh <(curl https://create.tauri.app/sh)
PowerShell
C:\> irm https://create.tauri.app/ps | iex
Cargo
$ cargo install create-tauri-app --locked
$ cargo create-tauri-app
npm/yarn/pnpm/bunx
$ npm create tauri-app@latest
$ yarn create tauri-app
$ pnpm create tauri-app
$ bunx create-tauri-app
| 软件 | 描述 |
|---|---|
| rust | rust安装 |
| nodejs | nodejs安装 |
| Windows Build Tools | Microsoft C++ 生成工具 (for windows) |
在进行安卓开发之前,需要首先安装 Android Studio 并配置好环境变量。
安装后,打开 Settings,切换到 Languages & Frameworks > Android SDK 界面。
可以在这个页面更改
Android SDK Location以调整 SDK 安装目录
安装以下内容:
Rust 默认只安装当前主机平台的编译目标(比如在 macOS 上默认就是 x86_64-apple-darwin)。
如果你想编译到其它平台或架构,就需要使用 rustup target add 安装对应的编译目标。
Android 应用打包时,一般会把编译的这几种架构的库文件全都放进 APK/ABB 中,系统会自动选择匹配的那个。
| target | CPU 架构 | 常见设备/场景 |
|---|---|---|
| aarch64-linux-android | ARM 64 位 | 新款安卓手机(主流) |
| armv7-linux-androideabi | ARM 32 位 | 老款安卓手机(较少见) |
| i686-linux-android | Intel x86 32 位 | 早期安卓模拟器(老旧) |
| x86_64-linux-android | Intel x86 64 位 | 安卓模拟器、新款 Chromebook |
$ rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
创建基础 Tauri 项目:
# 创建 tauri 项目
$ npm create tauri-app@latest
# 安装依赖
$ npm install
手动创建:
$ npm install -D @tauri-apps/cli@latest
# 进入项目目录初始化,按照提示输入即可
$ npx tauri init
创建后,则可以执行以下命令:
# 初始化 Android 开发配置
$ npx tauri android init
# 开发 Android 应用
$ npx tauri android dev
# 构建 Android 应用
$ npx tauri android build
Android 系统要求所有 APK 必须先使用证书进行数字签名,然后才能安装到设备上或进行更新。
keytool 是 Java 数据证书管理工具。
可以在 JAVA_HOME 环境变量指向的目录下的 /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
// ...
android {
defaultConfig {
// ...
}
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["keyPassword"] as String
storeFile = file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["storePassword"] as String
}
}
buildTypes {
// ...
getByName("release") {
signingConfig = signingConfigs.getByName("release")
// ...
}
}
}
配置完毕后,当执行 npm run tauri android build 时,会自动对构建的 APK/AAB 文件进行签名。
根据苹果政策,MacOS 不允许运行在非 Mac 硬件上,而开发所依赖的 Xcode 工具链只在 MacOS 上可用。
因此,为了进行开发 iOS 和 MacOS 应用,必须要有一台 Mac 设备。
对应用进行签名和发布,需要加入 Apple Developer Program(年费 99 美元)。
不付费可以正常使用 Xcode 等工具,但无法进行正式签名和在 App Store 上架。
Xcode 是苹果官方的开发工具,提供了完整的开发环境,包括测试,分发,模拟器等。
需要注意的是,Xcode 的版本并非越新越好,而是要根据当前设备的 MacOS 的系统版本来选择。
前往 Xcode 页面 下载安装 Xcode。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install cocoapods
$ rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim
默认配置 tauri.conf.json,还支持 tauri.conf.json5 和 Tauri.toml
| -- | -- |
|---|---|
package | 包设置 |
tauri | Tauri 配置 |
build | 构建配置 |
plugins | 插件配置 |
下面配置能与主配置进行合并
tauri.linux.conf.json 或 Tauri.linux.conf.tomltauri.windows.conf.json 或 Tauri.windows.conf.tomltauri.macos.conf.json 或 Tauri.macos.conf.toml示例
{
"build": { ... },
"package": { ... },
"tauri": { ... }
}
| 配置 | Type | 描述 |
|---|---|---|
pattern | PatternKind | 应用程序名称 |
version | WindowConfig[] | 应用程序版本 |
cli | CliConfig | CLI 配置 |
bundle | BundleConfig | 打包器配置 |
allowlist | AllowlistConfig | 允许列表配置 |
security | SecurityConfig | 安全配置 |
updater | UpdaterConfig | 更新程序配置 |
systemTray | SystemTrayConfig | 配置应用系统托盘 |
macOSPrivateApi | boolean | macOS 私有API配置 |
窗口配置对象
| 配置 | Type | 默认值 | 描述 |
|---|---|---|---|
label | string | null | 窗口标识符 |
url | WindowUrl | view | 窗口的 webview URL |
userAgent | userAgent? | null | webview 的用户代理 |
fileDropEnabled | boolean | true | 是否在 Web 视图上启用文件放置 |
center | boolean | false | 窗口是否开始居中 |
x | number? | null | 窗口左上角的水平位置 |
y | number? | null | 窗口左上角的水平位置 |
width | number | 800 | 窗口宽度 |
height | number | 600 | 窗口高度 |
minWidth | number | null | 最小窗口宽度 |
minHeight | number | null | 最小窗口高度 |
| 配置 | Type | 默认值 | 描述 |
|---|---|---|---|
iconPath | string(必填) | null | 系统托盘上使用的默认图标的路径 |
iconAsTemplate | boolean | false | 用于确定图像是否代表 macOS 上的模板图像 |
menuOnLeftClick | boolean | true | 确定在 macOS 上托盘图标收到左键点击时菜单是否应该出现 |
title | string? | null | MacOS 托盘标题 |
应用程序系统托盘图标的配置