提前声明,Tauri确实是一个很好的框架,不用像Electron一样绑定一个chromium进去,rust的后端性能也很好,安全性也有保证,用着确实很爽
以下是一点小小的吐槽
- 文档不直观,官方给的示例很少,特别是插件,基本就是一个示例代码就没了,
前面的区域以后再来探索吧 - 有一些疑难杂症,网上都找不到解决方案,或者说根本没人遇到过,比如deep-link插件注册有很多文档没提到的坑,如果你的main函数开头有一些初始化代码,不是直接
tauri::Builder::default()然后第一个注册single instance插件,就可能出现自定义url注册不了的问题,网上一点资料都找不到
,最后只能去发issue问问。不过tauri作者很热心,回复也很快,必须好评。还有许许多多的坑,一踩一个不吱声
以及我最近遇到的一个随机崩溃的bug,也是根本找不到任何信息,L站有没有大佬研究过的来帮帮我 ![]()
以下是panic_hook抓的栈帧
Panic Message: assertion failed: flush_paint_messages(None, &subclass_input.event_loop_runner)
Location: D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop.rs:2345:11
Backtrace:
0: std::backtrace_rs::backtrace::win64::trace
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\..\..\backtrace\src\backtrace\win64.rs:85
1: std::backtrace_rs::backtrace::trace_unsynchronized
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
2: std::backtrace::Backtrace::create
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\backtrace.rs:331
3: std::backtrace::Backtrace::force_capture
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\backtrace.rs:312
4: aiverything::setup_panic_hook::closure$0
at .\src\main.rs:627
5: std::panicking::rust_panic_with_hook
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\panicking.rs:841
6: std::panicking::begin_panic_handler::closure$0
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\panicking.rs:699
7: std::sys::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\sys\backtrace.rs:168
8: std::panicking::begin_panic_handler
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\panicking.rs:697
9: core::panicking::panic_fmt
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\core\src\panicking.rs:75
10: core::panicking::panic
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\core\src\panicking.rs:145
11: tao::platform_impl::platform::event_loop::thread_event_target_callback::closure$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop.rs:2345
12: core::ops::function::FnOnce::call_once<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >,tuple$<> >
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\ops\function.rs:250
13: core::panic::unwind_safe::impl$25::call_once<windows::Win32::Foundation::LRESULT,tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\panic\unwind_safe.rs:272
14: std::panicking::catch_unwind::do_call<core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >,windows::Win32:
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:589
15: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$0<enum2$<tauri_plugin_shell::commands::spawn::async_block_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > > >,alloc::
16: std::panicking::catch_unwind
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:552
17: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >,windows::Win32::Foundation::
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panic.rs:359
18: tao::platform_impl::platform::event_loop::runner::EventLoopRunner<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::catch_unwind<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,windows::Win32::Foundation::LRESUL
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop\runner.rs:156
19: tao::platform_impl::platform::event_loop::thread_event_target_callback<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop.rs:2436
20: DefSubclassProc
21: GetWindowSubclass
22: CallWindowProcW
23: SendMessageW
24: GetWindowDpiAwarenessContext
25: KiUserCallbackDispatcher
26: NtUserDispatchMessage
27: IsWindowUnicode
28: tray_icon::platform_impl::platform::tray_proc
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tray-icon-0.21.1\src\platform_impl\windows\mod.rs:317
29: CallWindowProcW
30: CallWindowProcW
31: DefSubclassProc
32: DefSubclassProc
33: muda::platform_impl::platform::menu_subclass_proc
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\muda-0.17.1\src\platform_impl\windows\mod.rs:1178
34: DefSubclassProc
35: GetWindowSubclass
36: CallWindowProcW
37: SendMessageW
38: User32InitializeImmEntryTable
39: KiUserCallbackDispatcher
40: NtUserPeekMessage
41: PeekMessageW
42: PeekMessageW
43: windows::Win32::UI::WindowsAndMessaging::PeekMessageW
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\windows-0.61.3\src\Windows\Win32\UI\WindowsAndMessaging\mod.rs:1844
44: tao::platform_impl::platform::event_loop::flush_paint_messages::closure$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop.rs:822
45: tao::platform_impl::platform::event_loop::runner::EventLoopRunner<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::owned_windows<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tao::platform_impl::platform::eve
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop\runner.rs:194
46: tao::platform_impl::platform::event_loop::flush_paint_messages<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop.rs:817
47: tao::platform_impl::platform::event_loop::thread_event_target_callback::closure$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop.rs:2345
48: core::ops::function::FnOnce::call_once<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >,tuple$<> >
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\ops\function.rs:250
49: core::panic::unwind_safe::impl$25::call_once<windows::Win32::Foundation::LRESULT,tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\panic\unwind_safe.rs:272
50: std::panicking::catch_unwind::do_call<core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >,windows::Win32:
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:589
51: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$0<enum2$<tauri_plugin_shell::commands::spawn::async_block_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > > >,alloc::
52: std::panicking::catch_unwind
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panicking.rs:552
53: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<tao::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > > >,windows::Win32::Foundation::
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\panic.rs:359
54: tao::platform_impl::platform::event_loop::runner::EventLoopRunner<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::catch_unwind<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,windows::Win32::Foundation::LRESUL
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop\runner.rs:156
55: tao::platform_impl::platform::event_loop::thread_event_target_callback<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop.rs:2436
56: DefSubclassProc
57: GetWindowSubclass
58: CallWindowProcW
59: SendMessageW
60: GetWindowDpiAwarenessContext
61: KiUserCallbackDispatcher
62: NtUserDispatchMessage
63: IsWindowUnicode
64: windows::Win32::UI::WindowsAndMessaging::DispatchMessageW
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\windows-0.61.3\src\Windows\Win32\UI\WindowsAndMessaging\mod.rs:577
65: tao::platform_impl::platform::event_loop::EventLoop<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::run_return<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::make_event_handler::closure_env
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop.rs:259
66: tao::platform_impl::platform::event_loop::EventLoop<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::run<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::make_event_handler::closure_env$0<enum
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\platform_impl\windows\event_loop.rs:221
67: tao::event_loop::EventLoop<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > > >::run<enum2$<tauri_runtime_wry::Message<enum2$<tauri::EventLoopMessage> > >,tauri_runtime_wry::make_event_handler::closure_env$0<enum2$<tauri::EventLoopMessag
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tao-0.34.0\src\event_loop.rs:215
68: tauri_runtime_wry::impl$45::run<enum2$<tauri::EventLoopMessage>,tauri::app::impl$16::make_run_event_loop_callback::closure_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> >,tauri::app::impl$19::run::closure_env$0<tauri_runtime_wry::Wry<enum2$<
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tauri-runtime-wry-2.7.2\src\lib.rs:3019
69: tauri::app::App<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > >::run<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> >,tauri::app::impl$19::run::closure_env$0<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > > >
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tauri-2.7.0\src\app.rs:1238
70: tauri::app::Builder<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > >::run<tauri_runtime_wry::Wry<enum2$<tauri::EventLoopMessage> > >
at D:\windows-software\rust\cargo_home\registry\src\index.crates.io-1949cf8c6b5b557f\tauri-2.7.0\src\app.rs:2289
71: aiverything::main
at .\src\main.rs:243
72: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\ops\function.rs:250
73: core::hint::black_box
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\hint.rs:482
74: std::sys::backtrace::__rust_begin_short_backtrace<void (*)(),tuple$<> >
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\sys\backtrace.rs:152
75: std::rt::lang_start::closure$0<tuple$<> >
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\rt.rs:206
76: std::rt::lang_start_internal::closure$0
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\rt.rs:175
77: std::panicking::catch_unwind::do_call
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\panicking.rs:589
78: std::panicking::catch_unwind
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\panicking.rs:552
79: std::panic::catch_unwind
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\panic.rs:359
80: std::rt::lang_start_internal
at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library\std\src\rt.rs:171
81: std::rt::lang_start<tuple$<> >
at D:\windows-software\rust\rust_home\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\rt.rs:205
82: main
83: invoke_main
at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
84: __scrt_common_main_seh
at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
85: BaseThreadInitThunk
86: RtlUserThreadStart