Tauri 2.0.0-alpha.4 发布

2.0 的一个新 alpha 版本已发布。此版本包含了即将发布的 Tauri 1.3 版本中的所有变更、HTTP 客户端的一项重要破坏性变更,以及 Tauri 插件的原生移动端功能。
请确保将 NPM 和 Cargo 依赖项都更新到最新的 alpha 版本。您可以使用以下命令更新 NPM 依赖项
npm install @tauri-apps/cli@next @tauri-apps/api@nextyarn upgrade @tauri-apps/cli@next @tauri-apps/api@nextpnpm update @tauri-apps/cli@next @tauri-apps/api@nextcargo add tauri@2.0.0-alpha.4cargo add tauri-build@2.0.0-alpha.2 --buildcargo install tauri-cli --version "^2.0.0-alpha" --locked重新创建移动端项目以使用新功能
rm -r src-tauri/gentauri android inittauri ios init由于 Windows 上的开发服务器代理存在问题,已移除使用 attohttpc 的默认 HTTP 客户端。所有 reqwest-* 特性标志(feature flags)也已移除,因为 reqwest 现在是我们使用的默认客户端。
现在,Tauri 插件可以通过 Swift 访问 iOS API,通过 Kotlin 或 Java 代码访问 Android API,从而简化了摄像头或地理定位等平台接口的使用。要在现有插件上引导 (bootstrap) iOS 和 Android 项目,请运行 tauri plugin ios add 和 tauri plugin android add。新插件会自动包含编写原生移动端代码所需的所有配置。
这是一个接收字符串值并解析为对象的插件示例
Android 插件
package com.plugin.example
import android.app.Activityimport app.tauri.annotation.Commandimport app.tauri.annotation.TauriPluginimport app.tauri.plugin.JSObjectimport app.tauri.plugin.Pluginimport app.tauri.plugin.Invoke
@TauriPluginclass ExamplePlugin(private val activity: Activity): Plugin(activity) { @Command fun ping(invoke: Invoke) { val value = invoke.getString("value") ?: "" val ret = JSObject() ret.put("value", value) invoke.resolve(ret) }}iOS 插件
import UIKitimport WebKitimport Tauri
class ExamplePlugin: Plugin { @objc public func ping(_ invoke: Invoke) throws { let value = invoke.getString("value") invoke.resolve(["value": value as Any]) }}
@_cdecl("init_plugin_example")func initPlugin(name: SRString, webview: WKWebView?) { Tauri.registerPlugin(webview: webview, name: name.toString(), plugin: ExamplePlugin())}用于初始化插件的 Rust 代码
use tauri::{ plugin::{Builder, TauriPlugin}, Manager, Runtime,};
#[cfg(target_os = "ios")]tauri::ios_plugin_binding!(init_plugin_example);
pub fn init<R: Runtime>() -> TauriPlugin<R> { Builder::new("example") .setup(|app, api| { #[cfg(target_os = "android")] api.register_android_plugin("com.plugin.example", "ExamplePlugin")?; #[cfg(target_os = "ios")] api.register_ios_plugin(init_plugin_example)?; Ok(()) }) .build()}用于调用插件命令的前端代码
import { invoke } from '@tauri-apps/api/tauri';invoke('plugin:example|ping', { value: 'Tauri' }).then(({ value }) => console.log('Response', value));© 2026 Tauri 贡献者。CC-BY / MIT