基于Rust构建轻量级桌面应用工具-Tauri
2023-05-04 15:10:08 阿炯

Tauri 是一个桌面 UI 框架,可让开发者使用每个平台的 Webview 技术栈为所有主要桌面操作系统构建应用程序,目前支持 Windows/macOS/Linux 等平台。开发者通过它几乎可以为任何可编译为 HTML、JS 和 CSS 的前端框架来构建桌面 UI。核心库采用 Rust 编写,使用 Tauri 开发的应用程序的后端是一个基于 Rust 的二进制文件,带有一个前端可以与之交互的 API,通过 JS Api 调用后台接口。采用MITApacheV2.0双协议授权方式。

Tauri is a framework for building tiny, blazingly fast binaries for all major desktop platforms. Developers can integrate any front-end framework that compiles to HTML, JS and CSS for building their user interface. The backend of the application is a rust-sourced binary with an API that the front-end can interact with.


Tauri为所有主要桌面平台构建小巧、快速的二进制文件。开发人员可以集成任何可编译为 HTML、JS 和 CSS 的前端框架,以构建其用户界面。应用程序的后端是一个基于 Rust 的二进制文件,带有一个前端可以与之交互的 API。Tauri 应用程序的用户界面目前在 macOS 和 Windows 上利用 tao 作为窗口处理库,在 Linux 上通过 Tauri 团队孵化和维护的 WRY 利用 WebKit、Windows 上的 WebView2 和 Linux 上的 WebKitGTK 创建一个统一的系统 webview(和其他好东西,如菜单和任务栏)接口。

特性:
无本地主机
安全模式的自定义协议
动态超前编译(dAoT)与功能树摇动
功能性地址空间布局随机化
运行时对函数名和信息进行 OTP salting
CSP 注入


最新版本:1.3
2023年5月上旬发布的1.3版本变化包括安全改进、引入新功能和修复重要错误。

引入 NSIS:Tauri CLI 现在可以使用 NSIS 创建 Windows 应用程序安装包。这个新的 bundle target 目前作为一项实验性功能在 macOS 和 Linux 上可用,因此开发者可以交叉编译 Windows 安装程序。NSIS 的文档将很快发布。

外部 API 访问:开发团队表示,这是迄今为止最具影响力和最耗时的 PR。此 PR 为应用程序引入了一种简化的方式,允许外部域访问 Tauri IPC 层 ,并且使用主要影响 Tauri 应用程序的安全模型。安全影响取决于暴露的特性、启用的 Tauri 命令和对方的能力。有人将这项新功能比喻为在没有启用任何安全功能的情况下驾驶非常快的赛车,并敦促开发者非常非常仔细地考虑他们是否真的需要这种暴露。

浏览器参数 (Browser Arguments):由于某些 webview 功能未启用或无法访问,社区引入了向 webview 进程添加额外参数的可能性,该进程在新窗口中创建。此功能在 window 端点中暴露给前端。开发团队发现这种暴露风险很高,因为大多数 webview 具有非常有影响力的功能和标志,可以通过进程参数允许授权。

更多详情查看发行公告

Tauri v2 首个 Beta 已于2024年2月上旬发布,新版本添加了对移动端(iOS 和 Android)的支持。其发行公告写道:“Tauri v2 是支持跨平台开发的一个重大里程碑,开发桌面和移动应用程序从未如此简单。你可以将现有的桌面程序无缝迁移到移动设备,并获得原生 API 和 Tauri CLI 的出色开发者体验”。新特性如下:
改进 IPC与支持多 Webview,实现多个窗口 API
新增菜单和托盘图标 JavaScript APIs、原生上下文菜单
移动端原生 API 目前支持通知、对话框、NFC、条形码读取、生物识别、剪贴板和深度链接 (deep link)

最新版本:2.x
v2.0 稳定版已于2024年10月上旬正式发布,主要新特性和改进如下:
移动支持:添加了对 iOS 和 Android 的支持。
多 WebView 支持:支持在应用中使用多个 WebView,通过不稳定特性标志启用。
rustls-tls 特性标志:添加了对 rustls TLS backend 的支持。
窗口阴影选项:创建 WebView 窗口时添加了设置窗口阴影的选项。
IPC 模块:添加了新的 IPC 模块,支持原始数据传输。
文件系统模块:添加了新的文件系统模块和 API。
自动启动:支持应用在系统启动时自动启动。
条形码扫描器:允许移动应用使用相机扫描条形码。
生物识别:在 Android 和 iOS 上提示用户进行生物识别验证。
剪贴板访问:读取和写入系统剪贴板。
命令行界面:解析命令行界面的参数。
深度链接:将 Tauri 应用程序设置为 URL 的默认处理程序。
对话框:打开和保存文件的原生系统对话框。
全局快捷键:注册全局快捷键。
HTTP 客户端:使用 Rust 编写的 HTTP 客户端。
本地主机:在生产应用程序中使用本地主机服务器。
日志记录:可配置的日志记录。
NFC:在 Android 和 iOS 上读取和写入 NFC 标签。
通知:向用户发送原生通知。
操作系统信息:读取操作系统信息。
持久作用域:在文件系统上持久化运行时作用域更改。
定位器:将窗口移动到常见位置。
进程访问:访问当前进程。
Shell:访问系统 Shell,使用默认应用程序管理文件和 URL,并生成子进程。
单实例:确保 Tauri 应用只有一个实例在运行。
SQL:为前端提供了与 SQL 数据库通信的接口。
存储:持久化键值存储。
加密数据库:提供加密、安全的数据库。
系统托盘:添加了系统托盘支持。
自动更新:为 Tauri 应用程序提供应用内更新。
文件上传:通过 HTTP 上传文件。
WebSocket:使用 Rust 客户端在 JavaScript 中打开 WebSocket 连接。
窗口自定义:自定义窗口状态,包括窗口大小和位置。

更多更新详情查看发行公告


项目主页:https://github.com/tauri-apps/tauri